<Android>菜单资源的使用
典型菜单资源结构:<menu>根元素且没有属性,在<menu>根元素里面会嵌套<item>和<group>子元素,<item>里面可以嵌套<menu>形成子菜单。
<group>表示一个菜单组,相同的菜单组可以一起设置其属性,属性说明如下
id:唯一标示该菜单组的引用id
meunCategory:对菜单进行分类,定义菜单的优先级,有效值为container,system,secondary和alternative。
orderInCategory:一个分类排序整数
checkableBehavior:选择行为,单选多选还是其它,有效值为none,all,single
visable:是否可见,true或false
enabled:是否可见,true或false
<item>表示菜单项,包含在<menu>或者<group>中的有效属性,说明如下
id:唯一标示菜单的ID引用
orderInCategory:分类排序
menuCategory:菜单分类
title:菜单标题字符串
titleCondensed:浓缩标题,适合标题太长的时候使用
icon:菜单的图标
alphabeticShortcut:字符快捷键
numericShortcut:数字快捷键
checkable:是否可选
checked:是否已被选中
visible:是否可见
enabled:是否可用
1.菜单xml文件示例file_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="File"
android:icon="@drawable/file">
<menu>
<group
android:id="@+id/noncheckable_group"
android:checkableBehavior="none">
<item
android:id="@+id/newFile"
android:title="New"
android:alphabeticShortcut="n"/>
<item
android:id="@+id/openFile"
android:title="Open"
android:alphabeticShortcut="o"/>
<item
android:id="@+id/saveFile"
android:title="Save"
android:alphabeticShortcut="s"/>
</group>
</menu>
</item>
<item android:title="Edit" android:icon="@drawable/edit">
<menu>
<group android:id="@+id/edit_group"
android:checkableBehavior="single">
<item android:id="@+id/cut"
android:title="Cut" />
<item android:id="@+id/copy"
android:title="Copy"/>
<item android:id="@+id/past"
android:title="Past"/>
</group>
</menu>
</item>
<item android:title="Help" android:icon="@drawable/help">
<menu>
<group android:id="@+id/help_group">
<item android:id="@+id/about"
android:title="About" />
<item android:id="@+id/exit"
android:title="Exit" />
</group>
</menu>
</item>
</menu>
2.java代码中加载菜单
//private MenuInflater mi;
//mi = new MenuInflater(this);
/*
* 创建菜单
*/
public boolean onCreateOptionsMenu(Menu menu) {
mi.inflate(R.menu.file_menu, menu);
return true;
}
//菜单响应
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
aboutAlert("本实例演示的是如何使用XML菜单资源来定义菜单!");
break;
case R.id.exit:
exitAlert("真的要退出吗?");
break;
}
return true;
}
// 显示对话框
private void exitAlert(String msg){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg)
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
return;
}
});
AlertDialog alert = builder.create();
alert.show();
}
// 显示对话框
private void aboutAlert(String msg){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg)
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
}
直接在java代码中使用
选项菜单
1.覆盖Activity的onCreateOptionsMenu(Menu menu)方法,第一次打开菜单时该方法被自动跳用
2.调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法设置菜单项图标
3.当菜单项被选择时,覆盖Activity的onOptionsItemSelected()方法来响应事件
public class MainActivity extends Activity {
private static final int ITEM1 = Menu.FIRST;
private static final int ITEM2 = Menu.FIRST+1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 覆盖该方法添加菜单项
*/
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ITEM1, 0, "开始");
menu.add(0, ITEM2, 0, "退出");
return true;
}
/**
* 覆盖该方法,响应菜单选项被单击事件
*/
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM1:
setTitle("开始游戏!");
break;
case ITEM2:
setTitle("退出!");
break;
}
return true;
}
}
上下文菜单
1.覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项(MenuItem).
2.覆盖onContextItemSelected()方法,响应菜单单击事件。
3.调用registerForContextMenu()方法,为视图注册上下文菜单。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTV = (TextView)findViewById(R.id.TextView01);
registerForContextMenu(myTV);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, ITME1, 0, "红色背景");
menu.add(0, ITME2, 0, "绿色背景");
menu.add(0, ITME3, 0, "白色背景");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITME1:
myTV.setBackgroundColor(Color.RED);
break;
case ITME2:
myTV.setBackgroundColor(Color.GREEN);
break;
case ITME3:
myTV.setBackgroundColor(Color.WHITE);
break;
}
return true;
}
子菜单
1.覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项(Sub Menu)
2.调用SubMenu的add()方法,添加子菜单(Sub Menu)
3.覆盖onOptionsItemSelected()方法,响应菜单单击事件
public class MainActivity extends Activity {
private static final int ITEM1 = Menu.FIRST;
private static final int ITEM2 = Menu.FIRST+1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 覆盖该方法添加子菜单项
*/
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu file = menu.addSubMenu("文件");
SubMenu edit = menu.addSubMenu("編輯");
file.add(0, ITEM1, 0, "新建");
file.add(0, ITEM2, 0, "打开");
return true;
}
/**
* 覆盖该方法,响应菜单选项被单击事件
*/
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM1:
setTitle("新建文件!");
break;
case ITEM2:
setTitle("打开文件!");
break;
}
return true;
}
<Android>菜单资源的使用的更多相关文章
- Android学习笔记菜单资源文件
创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...
- Android菜单项内容大全
一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...
- Android应用资源的分类和存储
Android应用资源可以分为两大类1.无法直接访问的原生资源,保存在asset目录下2.可通过R资源清单类访问的资源,保存在res目录下 Android应用资源的存储/res/anim:存放定义补间 ...
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android 之 资源文件的介绍及使用
Android 之 资源文件的介绍及使用 1.资源的简单介绍: 在res文件夹中定义:字符串.颜色.数组.菜单.图片.视频等:在应用程序中使用这些资源. 2.使用资源的长处:降低代码量,同一时候为 ...
- 简单的 Android 菜单
Android 创建简单的菜单 一:上下文菜单: 1.在 res 下创建菜单项资源文夹 menu app->右击res->new->android resourse director ...
- Android菜单
Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...
- Android应用资源
Java刚開始学习的人直接在Java源代码使用"hello" 和123 类型的字符串和整型.但时间长了就会忘记当初定义的原因,有经验的或许会定义字符串常量ResultSet.TYP ...
- Android——菜单(Menu)
菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...
随机推荐
- python爬虫学习笔记(1)
一.请求一个网页内容打印 爬取某个网页: from urllib import request # 需要爬取的网页 url = "https://mbd.baidu.com/newspage ...
- Python支付接口汇总大全(包含微信、支付宝等)
微信接口 wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 weixin_pay- 是一个简单的微信支付的接口 weixin_pay- 微信支付接口(V3.3. ...
- Django模板语言与视图(view)
常用语法 {{ }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...
- 20145226夏艺华 《Java程序设计》第1周学习总结
http://www.cnblogs.com/bestixyh/p/5779286.html 去年暑假写的,确实比较丑陋,保留下来也是为了激励自己作出更多改变.寒假写的每一篇博客都尽最大努力养成了良好 ...
- Java线程和多线程(十二)——线程池基础
Java 线程池管理多个工作线程,其中包含了一个队列,包含着所有等待被执行的任务.开发者可以通过使用ThreadPoolExecutor来在Java中创建线程池. 线程池是Java中多线程的一个重要概 ...
- BZOJ4247_挂饰_KEY
题目传送门 背包的变形,不得不说卡了我很久(估计是下午睡傻了). 设f[i][j]为前i个物品剩下j个挂钩. f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].x,0)+ ...
- C#学习第一阶段——语法基础
C#是一门面向对象的编程语言.在面向对象的程序设计方法中,程序由各种相互交互的对象组成.相同种类的对象具有相同的属性,或者说是在相同的class 中的. 例如,以矩形为例,它具有高(len ...
- [ES]Elasticsearch在windows下的安装
1.环境 win7 64位 2.下载包环境 https://www.elastic.co/cn/downloads/elasticsearch 选择对应安装包 3.安装过程 解压安装包,例如我的,解压 ...
- Linux下安装Nginx并实现socket代理
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环 ...
- ORB-SLAM(七)ORBextractor 特征提取
该类中主要调用OpenCV中的函数,提取图像中特征点(关键点及其描述,描述子,以及图像金字塔) 参考TUM1.yaml文件中的参数,每一帧图像共提取1000个特征点,分布在金字塔8层中,层间尺度比例1 ...