Android 创建菜单Menu
menu分三种:
Options menu 选项菜单
Context menu 上下文菜单
Submenu 子菜单
Options menu 是通过单击menu,显示出来的菜单,最多显示六个,多余的会自动生成expanded menu(list形式弹出),在菜单中以“more”标识;单击“more”时会弹出list菜单;
图一:
创建方式(代码):
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_NEW_GAME, 0, "New Game");
menu.add(0, MENU_QUIT, 0, "Quit");
return true;
}
其中menu.add(groupId, itemId, order, title)方法是向菜单中添加一个菜单项
groupId 是组id,可将多个菜单项分为一组,可以对一组进行整体控制
itemId 是添加的菜单项的id,用以标识该项,事件处理时会用到
order 控制菜单项的显示顺序,默认按添加的顺序进行显示
title 菜单项的标题,即当单击menu键时,显示出菜单,每项上的文字
该方法有返回值 MenuItem 类型,即得到添加的MenuItem,可以对该MenuItem进行特别的处理,比如:
调用setIcon 方法为其设置显示图标;
事件处理:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_NEW_GAME:
newGame();
return true;
case MENU_QUIT:
quit();
return true;
}
return false;
}
当选中菜单中的某一项时,会触发该方法,通过item.getItemId(),可以取得选中的项,根据需要,对每项编写事件处理即可
ContextMenu 是上下文菜单,功能类似于PC机中的鼠标右键功能,ContextMenu会注册给某一个View,当长按该View时会弹出 上下文菜单,是弹出列表形式
图二:
创建方式:
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, EDIT_ID, 0, "Edit");
menu.add(0, DELETE_ID, 0, "Delete");
}
事件处理:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case EDIT_ID:
editNote(info.id);
return true;
case DELETE_ID:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
创建与事件处理都与Options Menu 一样
Submenu 子菜单
子菜单可以被加到任意的其它菜单中,但不能被加到其它的子菜单中,通过Menu的addSubMenu()方法添加
创建方式
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
SubMenu fileMenu = menu.addSubMenu("File");
SubMenu editMenu = menu.addSubMenu("Edit");
fileMenu.add("new");
fileMenu.add("open");
fileMenu.add("save");
editMenu.add("undo");
editMenu.add("redo");
return result;
}
事件处理与Options Menu 一样