The Android system's default menu is very awkward, and then I made a pop-up menu.



The main interface does not matter, directly overwrite onCreateOptionsMenu,

Menu.add(Menu.NONE, Menu.FIRST + 1, 5, "Delete").setIcon(
android.R.drawable.ic_menu_delete);
 Menu.add(Menu.NONE, Menu.FIRST + 2, 2, "Save").setIcon(
android.R.drawable.ic_menu_edit);
 Menu.add(Menu.NONE, Menu.FIRST + 3, 6, "Help").setIcon(
android.R.drawable.ic_menu_help);
 Menu.add(Menu.NONE, Menu.FIRST + 4, 1, "Add").setIcon(
android.R.drawable.ic_menu_add);
 Menu.add(Menu.NONE, Menu.FIRST + 5, 4, "details").setIcon(
android.R.drawable.ic_menu_info_details);
 Menu.add(Menu.NONE, Menu.FIRST + 6, 3, "send").setIcon(
android.R.drawable.ic_menu_send);
return true;



Then there is a DefaultMenu class:

private boolean isMore = false;
AlertDialog menuDialog;
GridView menuGrid;
View menuView;
private final int ITEM_SEARCH = 0;
private final int ITEM_FILE_MANAGER = 1;
private final int ITEM_DOWN_MANAGER = 2;
private final int ITEM_FULLSCREEN = 3;
private final int ITEM_MORE = 11;
int[] menu_p_w_picpath_array = { R.drawable.menu_search,
R.drawable.menu_filemanager, R.drawable.menu_downmanager,
R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
R.drawable.menu_sharepage, R.drawable.menu_quit,
R.drawable.menu_nightmode, R.drawable.menu_refresh,
R.drawable.menu_more };
String[] menu_name_array = { "Search", "File Management", "Download Management", "Full Screen", "URL", "Bookmark",
 "Add bookmark", "Share page", "Exit", "Night mode", "Refresh", "More" };
int[] menu_p_w_picpath_array2 = { R.drawable.menu_auto_landscape,
R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
R.drawable.menu_checkupdate, R.drawable.menu_checknet,
R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
 String[] menu_name_array2 = { "automatic landscape", "pen mode", "read mode", "brows mode", "fast page"
 "Check for updates", "Check network", "Timed refresh", "Settings", "Help", "About", "Return" };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
menuView = View.inflate(this, R.layout.gridview_menu, null);
menuDialog = new AlertDialog.Builder(this).create();
menuDialog.setView(menuView);
menuDialog.setOnKeyListener(new OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU)
dialog.dismiss();
return false;
}
});
menuGrid = (GridView) menuView.findViewById(R.id.gridview);
menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_p_w_picpath_array));
menuGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch (arg2) {
case ITEM_SEARCH:
break;
case ITEM_FILE_MANAGER:
break;
case ITEM_DOWN_MANAGER:
break;
case ITEM_FULLSCREEN:
break;
case ITEM_MORE:
if (isMore) {
menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
menu_p_w_picpath_array2));
isMore = false;
} else {
menuGrid.setAdapter(getMenuAdapter(menu_name_array,
menu_p_w_picpath_array));
isMore = true;
}
menuGrid.invalidate();
menuGrid.setSelection(ITEM_MORE);
break;
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("menu");
return super.onCreateOptionsMenu(menu);
}
private SimpleAdapter getMenuAdapter(String[] menuNameArray,
int[] p_w_picpathResourceArray) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuNameArray.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemImage", p_w_picpathResourceArray[i]);
map.put("itemText", menuNameArray[i]);
data.add(map);
}
SimpleAdapter simperAdapter = new SimpleAdapter(this, data,
R.layout.item_menu, new String[] { "itemImage", "itemText" },
new int[] { R.id.item_p_w_picpath, R.id.item_text });
return simperAdapter;
}
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menuDialog == null) {
menuDialog = new AlertDialog.Builder(this).setView(menuView).show();
} else {
menuDialog.show();
}
return false;
}


Attachment download: below