菜单项选项
正如你所熟悉的那样,Android支持大多数传统的菜单项选项,包括icon、shortcut、checkbox和radio button,如下描述:
❑ Checkboxes和Radio Buttons
Checkboxes和radio buttons作为菜单项在扩展菜单和子菜单中可见,如图4-6所示。设置菜单项为checkbox,使用setCheckable方法。checkbox的状态由setChecked方法控制。
Radio button组是一组显示循环选择的按钮,每一次只能选择其中一个项目。在同一个组里,如果选择了一个,那么其它的自动变成未选择状态。创建radio button组,需要指定相同的组ID给每一个项目,然后调用menu.setGroupCheckable方法,传入组ID,并将其它参数指定为true。
Checkbox在图标菜单中不可见,所以,表示为checkbox的菜单项请保留给子菜单和扩展菜单使用。下面的代码片段给出了如何添加一个checkbox和一组三个radio button:
// Create a new check box item.
menu.add(0, CHECKBOX_ITEM, Menu.NONE, “CheckBox”).setCheckable(true);
// Create a radio button group.
menu.add(RB_GROUP, RADIOBUTTON_1, Menu.NONE, “Radiobutton 1”);
menu.add(RB_GROUP, RADIOBUTTON_2, Menu.NONE, “Radiobutton 2”);
menu.add(RB_GROUP, RADIOBUTTON_3, Menu.NONE, “Radiobutton 3”).setChecked(true);
menu.setGroupCheckable(RB_GROUP, true, true);
❑ Shortcut Keys
你可以使用setShortcut方法给菜单项指定快捷键。每一次调用setShortcut需要两个快捷键,一个是数字键,另一个可以是全键盘中的键。任何键不区分大小写。
下面的代码片段给出了如何为两种模式设定快捷键:
// Add a shortcut to this menu item, ‘0’ if using the numeric keypad
// or ‘b’ if using the full keyboard.
menuItem.setShortcut(‘0’, ‘b’);
❑ Condensed Titles
图标菜单不显示快捷键和checkbox,所以它需要经常修改它显示的文本来显示它的状态。接下来的代码给出了如何为图标菜单设定指定的文本:
menuItem.setTitleCondensed(“Short Title”);
❑ Icons
Icon是drawable资源ID,用来在菜单项中显示。Icons只能在图标菜单中显示;它们在扩展菜单和子菜单中不可见。下面的代码片段给出了如何为菜单项应用图标:
menuItem.setIcon(R.drawable.menu_item_icon);
❑ Menu Item Click Listener
当菜单项被选择时会执行的事件处理函数。考虑到效率的因素,这种做法不提倡;作为替代,菜单项的选择应该被onOptionsItemSelected处理器处理,如这个章节的后面所示。应用一个click listener到菜单项上,使用下面代码片段所示的样式:
menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem _menuItem) {
[ ... execute click handling, return true if handled ... ]
return true;
}
});
❑ Intents
当点击菜单项没有被MenuItemClickListener或Activity的onOptionsItemSelected处理函数处理的话,指定给菜单项的Intent就会被触发。触发时,Android会执行startActivity,传入一个指定的Intent。下面的代码片段给出了如何指定一个Intent给菜单项:
menuItem.setIntent(new Intent(this, MyOtherActivity.class));