菜单是任何应用程序必不可少的一项。按下Menu键或者长按某个View就会弹出相应菜单,当然前提是应用程序有实现菜单功能。

Android平台下的菜单有:Options Menu(选项菜单)、Submenu(子菜单)、Context Menu(上下文菜单)。

这次的案例用以前的索尼真机测试,就不贴代码和运行截图,主要贴些理论知识。

 

一、选项菜单和子菜单
  Options Menu和Submenu 是一组的,放在一起介绍,一般用于开发普通的选项菜单。

相关回调方法及说明:

Android 系统桌面 App Launcher 开发 安卓开发 菜单_子菜单

涉及到相关类详解:

1、Menu类

  一个Menu对象代表一个菜单,Menu对象中可以添加菜单项MenuItem,也可以添加子菜单SubMenu。常用方法如下:

Android 系统桌面 App Launcher 开发 安卓开发 菜单_选项菜单_02


注意:clear() 方法用于清除已添加的菜单,通过代码运行中的clear()再add()可以用于动态配置菜单。

2、MenuItem类
  一个MenuIten对象代表一个菜单项,通常MenuItem实例通过Menu的add方法获得。常用方法如下:

Android 系统桌面 App Launcher 开发 安卓开发 菜单_子菜单_03


注意:Android最多支持6个MenuItem,多了以后就摆在More里面。

3、SubMenu类
  一个SubMenu对象代表一个子菜单,可以理解为菜单的菜单,即Menu对象点进去弹出来的就叫子菜单,每个SubMenu实例代表一个子菜单,常用的方法如下

Android 系统桌面 App Launcher 开发 安卓开发 菜单_子菜单_04

一般用法:
1、在主Activity中覆盖onCreateOptionsMenu(Menu menu)方法,子菜单也在这里添加
2、如果要添加点击事件,则要覆盖onOptionsItemSelected(MenuItem item)方法

 

二、上下文菜单
  Context Menu类似于电脑上的右键,长按某个View之后弹出来的菜单。也是继承自Menu,不同于选项菜单,
选项菜单服务于Activity,而上下文是注册到某个VIew对象上的。如果一个View对象注册了上下文菜单,用户可以通过长按两秒该View对象调出上下文菜单。

用法同普通菜单,方法名称由Options替换Context

Android 系统桌面 App Launcher 开发 安卓开发 菜单_子菜单_05

 

三、用XML配置菜单
  注意到新建项目的MainActivity 都会重写onCreateOptionsMenu方法
里面代码:
getMenuInflater().inflate(R.menu.main, menu);
就是通过XML来设置菜单的。

如下在res/menu/main.xml 就是本来的配置菜单

1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
2 
3     <item
4         android:id="@+id/action_settings"
5         android:orderInCategory="100"
6         android:showAsAction="never"
7         android:title="@string/action_settings"/>
8 
9 </menu>

其他同再JAVA代码里的写法。