Android Menu 之 optionsMenu 详解

本文详细介绍了如何在Android中创建和管理optionsMenu,包括使用XML和代码创建菜单、响应菜单点击事件、理解Menu的属性如menuCategory和orderInCategory,以及Group分组的运用。同时提到了对Menu进行样式定制的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

optionsMenu就是用户在按下手机键盘上的Menu键时,Activity下方弹出的菜单。借个图展示一下:

接下来,本文的主要内容有:

1、  如何建立菜单

2、  如何响应菜单上的点击动作

3、  讲解Menu的各种属性及Group分组

 

首先,如何建立菜单。

其实每个Activity都有处理菜单的能力,我们只需要重写onCreateOptionsMenu(Menu menu)这个方法就可以建立菜单了。具体操作起来有两种方法。

方法一,直接用代码构建Menu

 

方法二,先用xml文件构建好Menu,再到代码里加载。

例如,res/menu/option_menu_1.xml内容如下:

 

 

则在Activity里这样写:

 

 

 

其次,如何响应菜单上的点击动作

我们只需要重写onOptionsItemSelected(MenuItem item)这个方法就可以做响应的操作了。代码如下:

  

最后,在设置Menu的时候,有些属性值得一说。

第一个,Item的属性:menuCategory,它的取值一共有四个。我们可以在xml文件中写上android:menuCategory="container",也可以在用代码构建Menu时这样写:menu.add(groupid,itemid,Menu.CATEGORY_CONTAINER,title);四个取值的具体内容可以参见API中Menu的静态属性部分。那这四个分类是有什么用的呢?根据API资料,这个分类应该是跟菜单展示时各项的排序有关系的。但是我试过不同的菜单项设不同的MenuCategory值,但结果并不是预期的那样,预期是:数值越小的越靠上,靠左。但有一点可以确认,MenuCategory不设值(默认为0)时,菜单项是排在最左上角的。

第二个,Item的属性:orderInCategory,它的取值是0-0xffff之间的整数。也是设置排序顺序的。它跟第一个属性有啥关系呢?就是一个菜单项最终的Order值是MenuCategory值与orderInCategory值相加的结果。

 

还有Group分组,在xml创建Menu时,已经演示了Group的使用。我们使用Group是为了方便处理那些拥有相同特征的菜单项。比如有几个菜单是要登录了才可以使用,或者部分菜单项前面要加选择框,那我们就可以将它们放到一组,后面对这一个组进行操作就行了。

 

最后再补充一个对Menu进行样式设置的问题。API中没有提供设置背景等的方法。有朋友已经解决了些问题。在此贴上链接。

http://blog.youkuaiyun.com/sodino/archive/2011/01/26/6165132.aspx

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值