Android基础之Menu操作详解

菜单操作
菜单是一种常见的应用程序与用户交互的方式,它使用类似列表的形式显示用户可以操作的功能,而用户则可以通过菜单来选择要执行的操作,应用程序也可以对用户的选择进行相关的响应。Android系统中的菜单大致分为选项菜单、子菜单、上下文菜单。

1、菜单分为两种
1)系统菜单(选项菜单)
创建系统菜单:
1、重写Activity的 onCreateOptionsMenu方法
调用menu对象的add方法添加菜单项
2、定义menu资源
重写Activity的onCreateOptionsMenu方法
根据menu资源扩充菜单
系统菜单的单击事件处理
重写Activity的 onOptionsItemSelected方法

2)上下文菜单
创建上下文菜单
为事件源对象设置OnCreateContextMenuListener监听器
上下文菜单的单击事件处理
重写Activity的 onContextItemSelected方法
注意:
如果上下文菜单事件的事件源是AdapterView对象
则,可以将上下文菜单项(MenuItem)的
getMenuInfo方法的返回值强制转换为AdapterContextMenuInfo
·选项菜单(OptionsMenu)是通过点击设备上的Menu键弹出的菜单;
- 通过res/menu下的XML文件可以配置选项菜单
- 在Activity中的onOptionsItemSelected()方法将用于选项菜单中菜单项的响应。
- 通常在配置选项菜单时,需要为每个菜单项配置如下属性:
1.id:菜单项的ID标识,用于响应菜单项时,判断当前点击的那个菜单项;
2.orderInCategory:序号,即存在多个菜单项时的排序,取值为整数,数值越小,则越靠前显示,数值越大,则越靠后显示;
3.showAsAction:将菜单项显示在ActionBar上,取值为枚举类型,包括never(从不显示在ActionBar上),always(始终显示在ActionBar上),ifRoom,withText,collapseActionView;
4.title:菜单项上显示的文字。

使用程序代码创建选项菜单
·在Activity的onCreateOptionsMenu方法中,使用参数menu即可创建菜单项。
·Menu类中定义的创建菜单项的方法:
public MenuItem add(int groupId,int itemId,int order,CharSequence title)
参数:groupId:菜单项分组
itemId:ItemId资源索引
order:菜单项的排序(数值越小越靠前)
title:显示在菜单项的文字
public MenuItem add(int groupId,int itemId,int order,int titleRes)
·子菜单(SubMenu)是选择某个菜单项后,再次弹出的下级菜单。
·选项菜单的子菜单(SubMenu)亦可通过配置文件或程序代码创建:
- 通过配置文件创建子菜单:为原有的上级菜单项的item节点添加menu子节点,并在menu子节点下再添加若干个item节点进行配置;
- 通过程序代码创建子菜单:调用Menu对象的addSubMenu()创建一般菜单项,通过返回值SubMenu对象创建子菜单。
·上下文菜单(ContextMenu)是通过长按(通常是2秒)某个空间后显示的菜单;
·通过重写Activity的OnContextMenu()方法可以初始化上下文菜单,菜单项的创建方式与在选项菜单中创建菜单项相同;
·需要调用registerForContextMenu(View view)方法将上下文菜单注册到某个控件之上;
·通过重写Activity的onContextMenuSelected()方法可以响应上下文菜单的选中事件。

示例1(系统菜单):
这里写图片描述

这里写图片描述
menu:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_file"
        android:orderInCategory="1001"
        android:showAsAction="never"
        android:title="File">
        <menu >
            <item 
                android:id="@+id/file_new"
                android:orderInCategory="1"
                android:showAsAction="never"
                android:title="New"/>
            <item 
                android:id="@+id/file_close"
                android:orderInCategory="2"
                android:showAsAction="never"
                android:title="Close"/>
        </menu>
     </item>

    <item
        android:id="@+id/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值