Android中菜单的使用

菜单(Menu)
-----------------------------
一、OptionsMenu(选项菜单/系统菜单)
创建方式:
1) 通过res\menu下的XML文件配置,并在Activity的onCreateOptionsMenu()方法中加载,配置时,应该至少配置id、orderInCategory、title属性
2) 在Activity的onCrateOptionsMenu()方法中,通过参数Menu的add()方法添加
响应方法:
1) 明确每个菜单项的id
2) 重写Activity的onOptionsItemSelected()方法,对参数MenuItem进行判断后进行响应
二、SubMenu(子菜单)
创建方式:
1) 在res\menu下的XML文件中,为一级菜单的<item>节点添加子级<menu>节点,并在<menu>节点下使用若干个<item>节点配置若干个子级菜单,配置方法与一级菜单的配置完全相同
2) 在Activity的onCreateOptionsMenu()方法中,使用addSubMenu()添加出可以存在子级菜单的一级菜单,并获取调用该方法时的返回值,返回值类型为SubMenu,然后通过该返回值继续调用若干次add()方法,以创建若干个子级菜单
Ps:菜单项的响应不区分菜单项的级别,所以,子菜单的响应与普通菜单的完全相同
3) ContextMenu(上下文菜单)
特点:
>> 上下文菜单是通过长按某个控件后弹出的菜单
>> 上下文菜单必须通过registerForContextMenu()方法注册到控件之上,对应的控件才会有上下文菜单
创建方法:
通过重写Activity的onCreateContextMenu()方法可以创建上下文菜单,具体创建过程与创建OptionsMenu相同
可以为多个控件都注册上下文菜单,当创建时,则根据onCreateContextMenu()的第2个参数View判断是由长按了哪个控件导致需要上下文菜单,从而决定创建出不同的菜单项
响应方法:
通过重写Activity的OnContextItemSelected()方法可以响应上下文菜单的选择
在AdapterView上的应用:
a) 注册上下文菜单时,为整个AdatperView(例如ListView或GridView)注册上下文菜单
2) 创建上下文菜单时,可以根据onCreateContextMenu()方法的第3个参数ContextMenuInfo向下转型为AdapterContextMenuInfo,然后获取该对象的position属性,即表示创建第几个列表项对应的上下文菜单
3) 响应上下文菜单里,可以把第2个步骤中得到的position提升为全局变量,则响应时可以直接获取列表项的位置信息,或者,根据OnContextItemSelected()方法的参数调用getMenuInfo()得到ContextMenuInfo对象,然后向下转型为AdapterContextMenuInfo,再获取position值,最后,进行处理,这2种响应方法的实现效果是相同的。

posted @ 2016-03-05 17:37  fighting9527  阅读(207)  评论(0编辑  收藏  举报