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的框架架构,但是可以使用一种更优雅的方式就 ...
随机推荐
- leetcode_最长公共前缀
题目:Write a function to find the longest common prefix string amongst an array of strings. 题解:给出的函数为: ...
- (转+原)ipp "No dlls were found in the Waterfall procedure"
转自: http://blog.csdn.net/hua_007/article/details/9112909 1,吧 dll的目录放到系统环境变量中 intel 的官方推荐.验证是ok的. --- ...
- (原+转)VS2013:正在从以下位置加载符号
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5158020.html 这段时间启动调试时,vs2013加载时间很长很长...然后下面网址给出了解决方法 ...
- HTML5简单入门系列(九)
前言 上篇本来应该就是最后一篇了,但是楼主总觉得没有写上一个简单应用,不算是完整的学习系列.所以增加一篇关于动画的应用,对一个开源动画的介绍(很基础,非楼主原创). 本篇介绍一个基于Canvas的发光 ...
- underscoreJS的Collections 的API
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Asp.net Web.Config - 配置元素customErrors
Asp.net配置文件的配置方式,其实在MSDN里面是写得最清楚的了.可惜之前一直未曾了解到MSDN的强大. 先贴个地址:http://msdn.microsoft.com/zh-cn/library ...
- 你真的会玩SQL吗?透视转换
原文:你真的会玩SQL吗?透视转换 透视转换是一种行列互转的技术,在转过程中可能执行聚合操作,应用非常广泛. 本章与 你真的会玩SQL吗?数据聚合 内容比较重要,还涉及到 你真的会玩SQL吗?Case ...
- windows bat脚本编写
windows批处理 (cmd/bat) 编程详解 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码 ...
- invesments 第三章 上
1. How firms issue securities: 公司如何发行股票 A. primary market: 新的股票,债券和其他的证券第一次发行的market B. ...
- UESTC_方老师买表 CDOJ 885
老师买表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Stat ...