Android中Menu的基本用法
一、 使用xml定义Menu
菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用<menu>标签作为根节点。除了<menu>标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是<item>和<group>。
<menu>标签没有任何属性,但可以嵌套在<item>标签中,表示子菜单的形式。不过<item>标签中不能再嵌入<item>标签。
1.<item>标签的属性含义如下:
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.<group>标签的属性含义如下:
id:表示菜单组的ID
menuCategory:与<item>标签的同名属性含义相同。只是作用域为菜单组
orderInCategory:与<item>标签的同名属性含义相同。只是作用域为菜单组
checkableBehavior:设置该组所有菜单项上显示的选择组件(CheckBox或Radio Button)。如果将该属性值设为all,显示CheckBox组件;如果设为single,显示Radio Button组件;如果设为none,显示正常的菜单项(不显示任何选择组件)。要注意的是,Android SDK官方文档在解释该属性时有一个笔误,原文是:
Whether the items are checkable. Valid values: none, all(exclusive/radiobuttons), single(non-exclusive/checkboxes).
相反了,正确应该是
all(non-exclusive/checkboxes),single(exclusive/radiobuttons).
visible:表示当前组中所有菜单项是否显示。该属性可设置的值是true或false
enable:表示当前组中所有菜单项是否被激活。该属性可设置的值是true或false
3.具体使用
在代码中使用
public boolenonCreateOptionsMenu(Menu menu){
MenuInflatemenuInflate = getMenuInflate();
menuInflate.inflate(R.menu.option_menu,menu);
returntrue;
}
二、使用代码定义Menu
public boolean onCreateOptionsMenu(Menu menu){
// 方法一,用代码构建
menu.add(Menu.NONE, Menu.NONE, 1, "菜单1");
menu.add(Menu.NONE, Menu.NONE, 2, "菜单2");
menu.add(Menu.NONE, Menu.NONE, 3, "菜单3");
menu.add(Menu.NONE, Menu.NONE, 4, "菜单4");
menu.add(Menu.NONE, Menu.NONE, 5, "菜单5");
menu.add(Menu.NONE, Menu.NONE, 6, "菜单6");
return true;
}
三、菜单响应
重写onOptionsItemSelected(MenuItem item)这个方法就可以做响应的操作了。
四、实例
res/menu下的activity_main.xml文件
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
        <item
            android:id="@+id/menu_settings"
            android:orderInCategory="1"
            android:icon="@drawable/home"
            android:title="@string/menu_settings"/>
        <item
            android:id="@+id/menu_about"
            android:orderInCategory="2"
            android:icon="@drawable/mine"
            android:title="@string/menu_about"/>
        <item
            android:id="@+id/menu_quit"
            android:orderInCategory="3"
            android:icon="@drawable/more"
            android:title="@string/menu_quit"/>  
    </menu>  
    package com.example.menutest;  
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;  
    public class MainActivity extends Activity {  
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }  
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }  
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // TODO Auto-generated method stub
            switch(item.getItemId()){
               case R.id.menu_about:
                   Toast.makeText(MainActivity.this, ""+"关于", Toast.LENGTH_SHORT).show();
                   break;
               case R.id.menu_settings:  
                   Toast.makeText(MainActivity.this, ""+"设置", Toast.LENGTH_SHORT).show();
                   break;
               case R.id.menu_quit:  
                   Toast.makeText(MainActivity.this, ""+"退出", Toast.LENGTH_SHORT).show();
                   break;
               default:
                   break;
               }
    //         Toast.makeText(MainActivity.this, ""+item.getItemId(), Toast.LENGTH_SHORT).show();  
            return super.onOptionsItemSelected(item);
        }  
    }  
运行结果:
Android中Menu的基本用法的更多相关文章
- android中Handle类的用法
		android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ... 
- Android(java)学习笔记196:Android中Menu的使用(静态和动态)
		1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ... 
- Android中Menu的基本使用方法
		一. 使用xml定义Menu 菜单资源文件必须放在res/menu文件夹中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单 ... 
- Android(java)学习笔记139:Android中Menu的使用(静态 和 动态)
		1. 使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用 ... 
- Android中DatePicker与TimePicker用法讲解(包括DatePickerDialog与TimePickerDialog)
		实现效果:将DatePicker和TimePicker修改的日期和时间实时显示在程序标题栏上. 1.通过DatePicker和TimePicker来实现 布局为main.xml <?xml ve ... 
- [转]Android中Application类的用法
		原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ... 
- Android(java)学习笔记120:Android中的Application类用法
		1.简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是 ... 
- Android中的Selector的用法
		转自: Android中的Selector主要是用来改变ListView和Button控件的默认背景.其使用方法可以按一下步骤来设计: (以在mylist_view.xml为例) 1.创建mylist ... 
- Android(java)学习笔记61:Android中的 Application类用法
		1. 简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就 ... 
随机推荐
- Eclipse闪退解决办法
			解决方式: 1.通过在命令行中输入“where java”,找到除jdk目录下的所有java相关程序,直接删掉(一般会在C:\WINDOWS\system32下) 2.内存不足,打开Eclipse目录 ... 
- 实战  Spring MVC接入支付宝即时到账 (部分代码)
			下面就拿我项目中的部分代码来实践一下. 支付请求 首先,是提交表单 fund.jsp(这里我表单只需要用户填交易金额,其他的订单号之类的全部后台生成) <form id="deposi ... 
- 安装ubuntu14.10系统的那些瞎折腾
			前段时间自作孽,安装了ubuntu14.04的64位系统,而我的笔记本又是那种老古董,2G的内存所以装好之后各种不稳定,索性这个周末就重装一下吧,本来打算是直接装我以前的那个ubuntu12.04-i ... 
- (原)ippicvmt.lib(ippinit.obj) : error LNK2005: _ippSetCpuFeatures@8 已经在 ippcoremt.lib(ippinit.obj) 中定义
			转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5497234.html 参考网址: http://answers.opencv.org/question ... 
- 关于"zoom“ 的一点小认识
			最早接触zoom是在清除浮动的时候,原因就是zoom能触发IE的haslayout,当时也没深究其原理,今天,在查看张鑫旭的对overflow与zoom”清除浮动”的一些认识时,其中提到zoom是比例 ... 
- find系列之xargs命令
			xargs的功能--> 将标准输入转换为命令行参数,供后面的命令调用,但是一次只能依据-d和-n限定的行数来推送一行 xargs的作用--> 使那些不能利用stdin的命令 ... 
- 学习http的一个网站
			http://www.blogjava.net/zjusuyong/articles/304788.html 
- Robberies(HDU 2955 DP01背包)
			Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ... 
- win7 Oracle 11g安装及安装中遇到的问题
			根据自己的系统从oracle官方下载安装包,官方地址:http://www.oracle.com/index.html win7的oracle 11g 安装包(2个): http://223.20.2 ... 
- 动态PDF在线预览
			实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是 ... 
