Android Menu菜单

一、Android提供了一些简单的方法来为应用添加Menu菜单。

提供了三种类型应用菜单:

1、Options Menu:通过Menu按钮调用菜单

2、Context Menu:通过长按屏幕,调用注册了的上下文菜单

3、Submenu:通过触摸Menu Item,调用子菜单选项


二、下面通过案例,来介绍如何定义Menu菜单、处理选项事件。

1、在/res/目录下新建menu文件夹,用于存储Menu XML资源文件

2、在/res/menu/下新建menu1.xml菜单界面描述文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:id="@+id/menu1" android:title="菜单1" />  
    <item android:id="@+id/menu2" android:title="菜单2" />  
</menu>

3、显示菜单,需重写Activity中onCreateOptionsMenu(Menu menu)方法

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu1, menu);//调用第二步中定义的Menu界面描述文件
		return true;
	}
onCreateOptionsMenu,当用户触击Menu按钮时,会调用这个方法。

4、设置“菜单1”、“菜单2”的选中事件

    @Override
	public boolean onOptionsItemSelected(MenuItem item) {
    	Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
		return super.onOptionsItemSelected(item);
	}
这里将每次选中的选项ID显示在屏幕上。

5、重写Activity中onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)

    @Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu1, menu);
		super.onCreateContextMenu(menu, v, menuInfo);
	}

之后当用户长按屏幕时,将会显示菜单项。


6、设置上下文菜单选项的选中事件

    @Override
    public boolean onContextItemSelected(MenuItem item){
    	Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
    	return super.onContextItemSelected(item);
    }
这里仅显示选中选项的ID

效果截图:



三、创建子菜单、单选子菜单、多选子菜单

1、子菜单

在<item/>标签内嵌套<menu/>

<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/submenu"
          android:title="菜单项1">
        <menu>
            <item android:id="@+id/submenu_item1"
                  android:title="子菜单项1" />
        </menu>
    </item>
</menu>

2、单选子菜单、多选子菜单
使用group标签,设置属性android:checkableBehavior其中的三个值:single、all、none

single设置为单选,all为多选,none为普通选项

更多的属性说明可以阅读文档:http://android.toolib.net/guide/topics/resources/menu-resource.html

多选示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
	<item android:id="@+id/csubmenu3" android:title="多选菜单">  
        <menu>  
            <group android:checkableBehavior="all">  
                <item android:title="子菜单1"/>  
                <item android:title="子菜单2"/>  
                <item android:title="子菜单3"/>  
            </group>  
        </menu>  
    </item>
</menu>
效果如下:



单选示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
	<item android:id="@+id/csubmenu2" android:title="单选菜单">  
        <menu>  
            <group android:checkableBehavior="single">  
                <item android:title="子菜单1"/>  
                <item android:title="子菜单2"/>  
                <item android:title="子菜单3"/>  
            </group>  
        </menu>  
    </item>
</menu>
效果如下



更多关于Menu方面的内容,可以阅读文档:http://android.toolib.net/guide/topics/resources/menu-resource.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值