系统里面有 3 种类型的菜单: Contex Menus ,情境菜单:不支持菜单快捷键和图标。 Options Menus ,选项菜单:支持图标,但不支持菜单项选中标记。 Sub menus ,子菜单,不支持图标,不能再有子菜单。
options menu: 按 Menu 键就会显示,用于当前的 Activity 。
它包括两种菜单项 :1. 因为 options menu 在屏幕底部最多只能显示 6 个菜单项,这些菜单项称为 icon menu , icon menu 只支持文字以及 icon ,可以设置快捷键,不支持 checkbox 以及 radio 控件,所以不能设置 checkable 选项
2. 而多于 6 的菜单项会以 ”more” icon menu 来调出,称为 expanded menu 。它不支持 icon ,其他的特性都和 icon menu 一样!
在 Activity 里面,一般通过以下函数来使用 options menu:
Activity:onCreateOptionsMenu(Menu menu) ::创建 options menu ,这个函数只会在 menu 第一次显示的时候调用。
Activity:onPrepareOptionsMenu(Menu menu) ::更新改变 options menu 的内容,这个函数会在 menu 每次显示时候调用。
Activity::onOptionsItemSelected(MenuItem item) ::处理选中的菜单项。
Context menu: 要在相应的 view 上按几秒钟后才显示,用于 view ,跟某个具体的 view 绑定在一起。这类型的菜单不支持 icon 和快捷键!
在 Activity 里面,一般通过以下函数来使用 context menu :
Activity::registerForContextMenu(View view) 为某个 view 注册 context menu ,一般在 Activity::onCreate 里面调用。
Activity::onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 创建 context menu ,和 options menu 不同, context meun 每次显示时都会调用这个函数。
Activity::onContextItemSelected(MenuItem item) 处理选中的菜单项。
sub menu: 以上两种 menu 都可以加入子菜单,但子菜单不能嵌套子菜单,这意味着在 Android 系统,菜单只有两层,设计时需要注意的!同时子菜单不支持 icon 。
要是让所有的Activity都添加Menu,可以让OtherActivity extends MenuActivity