菜单Menu复习

Android中的Menu有选项菜单(OptionMenu)、上下文菜单(ContextMenu)、弹出菜单(PopupMenu)

1.选项菜单 - OptionMenu和子菜单SubMenu

Android3.0开始,Android手机设备上不再强制提供Menu键,推荐使用的是ActionBar,而在Android 5.0的时候又再次推荐使用全新的控件ToolBar来代替ActionBar。

选项菜单:不支持勾选标记,且只显示菜单的浓缩标题。

子菜单:不支持菜单项图标,不支持嵌套子菜单。


2.上下文菜单 - ContextMenu

上下文菜单不支持菜单快捷键和图标。基本方法与选项菜单类似,区别是上下文菜单重写的是onCreateContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo),其中source代表触发上下文菜单的组件。


3.弹出菜单 - PopuMenu

在指定组件的上方或下方显示菜单。


3. 创建多选菜单项和单选菜单项

调用MenuItem方法中的setCheckable(boolean checkable),设置该方法后默认是多选菜单项

setGroupCheckable(int group,boolean checkable,boolean exclusive):设置group组里的所有菜单项是否可选,exclusive为true,将是一组单选菜单项。


4.Menu中添加子菜单或菜单项的方法

  • MenuItem add(int titleRes):添加一个新的菜单项。
  • MenuItem add(int groupId,int itemId,int order,CharSequence title):添加一个新的处于groupId组的菜单项。
  • MenuItem add(int groupId,int itemId,int order,int titleRes):添加一个新的处于groupId组的菜单项。
  • MenuItem add(CharSequence title):添加一个新的菜单项。
  • SubMenu addSubMenu(int titleRes):添加一个新的子菜单。
  • SubMenu addSubMenu(int groupId,int itemId,int order,int titleRes):添加一个新的处于groupId组的子菜单。
  • SubMenu addSubMenu(CharSequence title):添加一个新的子菜单。
  • SubMenu addSubMenu(int groupId,int itemId,int order,CharSequence title):添加一个新的处于groupId组的子菜单。


SubMenu额外提供有下面的方法:

  • setHeaderIcon(Drawable icon):设置菜单头的图标
  • setHeaderIcon(int iconRes):设置菜单头的图标
  • setHeaderTitle(int titleRes):设置菜单头的标题
  • setHeaderTitle(CharSequence title):设置菜单头的标题
  • setHeaderView(View view):使用View来设置菜单头
5. 使用菜单

5.1 选项菜单
  1. Activity中覆写onCreateOptionsMenu
  2. 重写onOptionItemSelected(MenuItem mi)来响应菜单项的单击事件
  3. 除了重写onOptionItemSelected方法外还可以通过setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener menuItemClicklistener),但不推荐该方法
  4. 设置菜单项关联的Activity方法:调用MenuItem中的setIntent(Intent intent)方法
5.2 上下文菜单
  1. 重写Activity中的onCreateContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo);
  2. 调用Activity的registerForContextMenu(View view)方法为view组件注册上下文菜单
  3. 重写onContextItemSelected(MenuItem mi)方法
5.3 XML中定义菜单
在res/目录下新建menu子目录,并在该子目录下创建menu_main.xml菜单资源文件。
菜单资源中根元素为<menu.../>,<menu.../>元素内可包含如下子元素:
  • <item.../>:定义菜单项
  • <group.../>:将多个<item/>定义的菜单项包装成一个菜单组。该子元素常用属性有:
  1. checkableBehavior:指定该组菜单的选择行为,包括none(不可选)、all(多选)和single(单选)
  2. menuCategory:对菜单进行分类,指定菜单的优先级。container、system、secondary和alternative
  3. visible:指定该组菜单是否可见
  4. enable:指定该组菜单是否可用
<item.../>可定义的属性有:
  1. android:id:为菜单项指定一个唯一标识
  2. android:title:指定标题
  3. android:icon:指定图标
  4. android:checkable:设置菜单项是否可选
  5. android:checked:设置菜单项是否已选中
  6. android:visible:菜单项是否可见
  7. android:enable:菜单项是否可用
之后就可以在onCreateOptionsMenu()或onCreateContextMenu()方法中调用MenuInflater对象的inflate方法加载定义好的菜单xml资源。

5.4 使用PopuMenu弹出式菜单
  1. new PopupMenu(Context context,View view);创建下拉菜单,view代表要激发该菜单的组件
  2. 调用MenuInflater的inflate()方法将菜单资源填充到PopupMenu中
  3. 调用show()方法显示菜单


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值