Android菜单——Menu

芮星海
2023-12-01

在Android系统中,菜单的种类可以分为:
1. OptionsMenu:选项菜单 / 系统菜单
2. ContextMenu:上下文菜单

OptionsMenu:选项菜单 / 系统菜单

OptionsMenu是点击设备上的Menu键弹出的菜单。
在Activity中,通过重写onCreateOptionsMenu()实现创建OptionsMenu;

1.【创建菜单-1:XML】
onCreateOptionsMenu()方法中,默认通过getMenuInflater().inflate()加载了设计菜单的XML文件,通过编辑该文件,即可完成菜单的设计,在XML文件中,每个菜单项(表现为一个个节点)可以配置以下属性:
– android:id -> 菜单项的id
– android:title -> 菜单项显示的标题文字
– android:icon -> 菜单项显示的图标
– android:orderInCategory -> 菜单项的排序序号,取值为任意int类型数值
– android:showAsAction -> 是否将菜单项显示到ActionBar(标题栏),取值为枚举类型,例如:never、always、ifRoom、withText、collapseActionView

2.【创建菜单-2:程序】
onCreateOptionsMenu()方法中,调用参数Menu menu的add()方法即可添加菜单项;
使用程序代码的方式添加菜单项可以是动态的,即根据程序的执行状态不同,区分创建某些菜单项;

3.【响应菜单】
响应菜单,即点击某个菜单项,程序可以对该操作进行响应。
在Activity中,重写onOptionsItemSelected()方法即可响应菜单。

ContextMenu:上下文菜单

ContextMenu是通过长按(约1.5s)某个控件弹出的菜单;
必须调用registerForContextMenu(View)方法对参数的控件对象注册菜单后,长按该控件才可以弹出ContextMenu;
1.【创建菜单】
在Activity中,重写onCreateContextMenu()方法,该方法的第1个参数ContextMenu menu可用于创建菜单项,第2个参数View v表示长按的哪个控件弹出的菜单,所以,根据第2个参数进行判断,可以实现长按不同控件,弹出不同的菜单,该方法的第3个参数通常没有意义,但是,如果是长按AdapterView弹出的菜单,可以将第3个参数强制转换为AdapterContextMenuInfo对象,并从中获取例如position这些数据;
2.【响应菜单】
在Activity中,重写onContextItemSelected()方法,可以实现点击ContextMenu中菜单项的响应,并在该方法中,可以通过参数MenuItem item的getItemId()方法判断点击的是哪个菜单项;

 类似资料: