Chendd's Blog

世界上没有什么事情是一行代码不能解决的。如果有,那就两行。

Android学习日记24--菜单开发

  菜单是任何应用程序必不可少的一项。按下Menu键或者长按某个View就会弹出相应菜单,当然前提是应用程序有实现菜单功能。 Android平台下的菜单有:Options Menu(选项菜单)、Submenu(子菜单)、Context Menu(上下文菜单)。 这次的案例用以前的索尼真机测试,就不贴代码和运行截图,主要贴些理论知识。菜单这块比较简单,代码实例看这里

一、选项菜单和子菜单

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

相关回调方法及说明:

image

涉及到相关类详解:

1、Menu类

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

image

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

2、MenuItem类

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

image

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

3、SubMenu类

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

image

一般用法:

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

二、上下文菜单

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

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

image

三、用XML配置菜单

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

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

1
2
3
4
5
6
7
8
9
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

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

Comments