AS之Menu

一,3种菜单模式

  1. 选项菜单(Options Menu):用户可以通过菜单键(Menu)打开菜单或点击右上角打开。
  2. 上下文菜单(Context Menu):类似于计算机中的“右键菜单”,当用户点击界面上某个元素超过2秒后,将启动注册到该界面元素的上下文菜单。
  3. 子菜单(SubMenu):子菜单是二级菜单,是将功能相同的操作分组显示,用户点击选项菜单或上下文中的菜单项就可以打开子菜单
  • OptionMenu对应的是Activity,一个Activity只能拥有一个选项菜单
  • ContextMenu对应的是View,每个View组件都可以设置上下文菜单

二,Activity类中的菜单操作方法

  • 所有的菜单创建方法都直接由Activity类本身提供,在Activity类中定义的菜单操作方法如下:
序号方法作用
01public void closeContextMenu()关闭上下文菜单
02public void closeOptionMenu()关闭选项菜单
03public boolean onContextItemSelected(MenuItem item)上下文菜单被选中时触发
04public void onContextMenuClosed(Menu menu)上下文菜单被关闭时触发
05public void onCreateContextMenu(ContextMenu menu,View v, ContextMenu.ContextMenuInfo menuInfo)创建上下文菜单
06public boolean onCreateOptionMenu(Menu menu)当用户按Menu键时,调用此操作,可生成一个选项菜单
07public boolean onMenuItemSelected (int featureId, MenuItem item)菜单被选中时触发
08public boolean onOptionsItemSelected (MenuItem item)当一个选项菜单中的某个菜单项被选中时触发该操作
09public void onOptionsMenuClosed (Menu menu)当选项菜单被关闭时触发该操作
10public boolean onPrepareOptionsMenu (Menu menu)当选项菜单显示之前触发该操作
11public void openOptionMenu()打开选项菜单
12public void openContextMenu(View view)打开上下文菜单
13public MenuInflater getMenuInflater ()获取菜单填充器对象
14public void registerForContextMenu(View view)注册上下文菜单

三,菜单操作涉及的2个接口
Activity类的菜单操作所涉及的接口:android.view.Menu,android.view.MenuItem

  1. Menu接口常用的方法和常量
序号方法或常量作用
01public static final int FIRST用于定义菜单项的编号
02public static final int NONE表示菜单不分组时使用的值
03public abstract MenuItem add(int groupid,int itemld,int order,CharSequence title)用于向菜单中添加菜单项, 参数:group:菜单所在组编号,itemId:菜单项的I的,order:菜单项的出现顺序,title:菜单项的显示文字
04public abstract MenuItem add (int groupId, int itemId, int order, int titleRes)添加菜单项
05public abstract SubMenu addSubMenu (int groupId, int itemId, int order, int titleRes)添加子菜单
06public abstract void removeGroup (int groupId)删除一个菜单组
07public abstract void removeItem (int id)删除一个菜单项
08public abstract void clear ()清空菜单
09public abstract void close ()关闭菜单
10public abstract MenuItem getItem (int index)获取指定的菜单项
11public abstract int size ()获取菜单项的个数
  1. MenuItem接口常用的方法和常量
序号方法或常量说明
1public abstract int getGroupId ()获取菜单组编号
2public abstract Drawable getIcon ()获取菜单项上的图标
3public abstract int getItemId ()获取菜单项上的Id
4public abstract int getOrder () 获取菜单项的编号
5public abstract SubMenu getSubMenu ()获取子菜单
6public abstract CharSequence getTitle ()获取菜单项的标题
7public abstract boolean isCheckable ()判断此菜单项是否可选
8public abstract boolean isChecked ()判断此菜单项是否被选中
9public abstract boolean isEnabled ()判断此菜单项是否可用
10public abstract boolean isVisible ()判断此菜单项是否可见用
11public abstract MenuItem setCheckable (boolean checkable)设置此菜单项是否可选
12public abstract MenuItem setChecked (boolean checked)设置此菜单项是否被选中
13public abstract MenuItem setEnabled (boolean enabled)设置此菜单项是否可用
14public abstract MenuItem setIcon (Drawable icon)设置此菜单项的图标
15public abstract MenuItem setIcon (int iconRes)设置此菜单项的图标
16public abstract MenuItem setOnMenuItemClickListener (MenuItem.OnMenuItemClickListener menuItemClickListener)为此菜单项注册单击监听器
17public abstract MenuItem setTitle (int title)设置菜单项的标题
18public abstract MenuItem setVisible (boolean visible)设置此菜单项是否可见
19public abstract ContextMenu.ContextMenuInfo getMenuInfo ()获得菜单中的消息内容

四,定义菜单资源文件

  • 菜单资源通常在res\menu目录下
  • 菜单资源的根元素通常是< menu > < /menu>标记
  • < menu> < /menu>一般包含两种元素
    < item> < /item>标记
属性描述
android:id用于为菜单项设置ID,也就是唯一标识
android:title用于为菜单项设置标题
android:alphabeticShortcut用于为菜单项指定字符快捷键
android:numericShortcut用于为菜单项指定数字快捷键
android:icon用于为菜单项指定图标
android:enabled用于指定该菜单项是否可用
android:checkable用于指定该菜单项是否可选
android:checked用于指定该菜单项是否已选中
android:visible用于指定该菜单项是否可见

< group> < /group>标记

属性描述
android:id用于为菜单组设置ID,也就是唯一标识
android:checkableBehavior用于指定菜单组内各项菜单项的选择行为,可选值为none(不可选)、all(多选)、single(单选)
android:menuCategory用于对菜单进行分类,指定菜单的优先级,可选值为container(容器)、system(系统)、secondary(第二的)和alternative(可供替代的)
android:enabled用于指定该菜单组中的全部菜单项是否可用
android:visible用于指定该菜单组中全部菜单项是否可见
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值