Android中menu的简单使用

首先重写activity中的两个方法

这个menu列表可以使用自带的也可以自定义布局格式

第一种:自带的菜单格式,直接添加
//第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
//第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
//第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
//第四个String类型的title参数,表示选项中显示的文字。
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        menu.add(0, 1, 1, "苹果");
        menu.add(0, 2, 2, "香蕉");
        return super.onCreateOptionsMenu(menu);
    }
第二种:自定义,通过MenuInflater填充器设定自定义的menu
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.zhy.sample.demo_recyclerview.MainActivity" >
    ![这里写图片描述](http://img.blog.csdn.net/20160710193915632)
    //前两个会显示到ActionBar
    //因为--app:showAsAction--这个属性
    //1.alaways:这个值会使菜单项一直显示在ActionBar上。
    //2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。
    //3.never:这个值菜单永远不会出现在ActionBar是。
    //4.withText:这个值使菜单和它的图标,菜单文本一起显示。
    <item
        android:id="@+id/id_action_add"
        android:icon="@drawable/actionbar_add_icon"
        android:orderInCategory="100"
        android:title="add"
        app:showAsAction="ifRoom">
    </item>
    <item
        android:id="@+id/id_action_delete"
        android:icon="@drawable/ic_menu_delete"
        android:orderInCategory="100"
        android:title="delete"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/id_action_gridview"
        android:orderInCategory="100"
         android:title="GirdView"
        app:showAsAction="never"/>
    <item
        android:id="@+id/id_action_listview"
        android:orderInCategory="100"
         android:title="ListView"
        app:showAsAction="never"/>
    <item
        android:id="@+id/id_action_horizontalGridView"
        android:orderInCategory="100"
         android:title="HorizontalGridView"
        app:showAsAction="never"/>

      <item
        android:id="@+id/id_action_staggeredgridview"
        android:orderInCategory="100"
         android:title="StaggeredGridView"
        app:showAsAction="never"/>

</menu>

在代码中使用menu

//创建菜单列表
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main_staggered, menu);
        return super.onCreateOptionsMenu(menu);
    }
//添加选项的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.id_action_add:
                mStaggeredHomeAdapter.addData(1);
                break;
            case R.id.id_action_delete:
                mStaggeredHomeAdapter.removeData(1);
                break;
        }
        return true;
    }

使用xml定义Menu
菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用

标签作为根节点。除了 标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是和。
标签没有任何属性,但可以嵌套在标签中,表示子菜单的形式。不过标签中不能再嵌入标签。
1.标签的属性含义如下:
Id:表示菜单项的资源ID
menuCategory:同种菜单项的种类。该属性可取4个值:Container、system、secondary和alternative。通过menuCategroy属性可以控制菜单项的位置。例如将属性设为system,表示该菜单项是系统菜单,应放在其他种类菜单项的后面。
orderInCategor:同种类菜单的排列顺序。该属性需要设置一个整数值。例如menuCategory属性值都为system的3个菜单项(item1、item2和item3)。将这3个菜单项的orderInCategory属性值设为3、2、1,那么item3会显示在最前面,而item1会显示在最后面。
title:菜单项标题(菜单项显示的文本)
titleCondensed:菜单项的短标题。当菜单项标题太长时会显示该属性值
icon:菜单项图标资源ID
alphabeticShortcut:菜单项的字母快捷键
numericShortcut:菜单项的数字快捷键
checkable:表示菜单项是否带复选框。该属性可设计为true或false
checked:如果菜单项带复选框(checkable属性为true),该属性表示复选框默认状态是否被选中。可设置的值为true或false
visible:菜单项默认状态是否可视
enable:菜单项默认状态是否被激活
2.标签的属性含义如下:
id:表示菜单组的ID
menuCategory:与标签的同名属性含义相同。只是作用域为菜单组
orderInCategory:与标签的同名属性含义相同。只是作用域为菜单组
checkableBehavior:设置该组所有菜单项上显示的选择组件(CheckBox或Radio Button)。如果将该属性值设为all,显示CheckBox组件;如果设为single,显示Radio Button组件;如果设为none,显示正常的菜单项(不显示任何选择组件)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值