<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中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...
随机推荐
- 2.1 摄像头V4L2驱动框架分析
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤: 一.V4L ...
- Python学习笔记四:列表,购物车程序实例
列表 切片 中括号,逗号分隔,可以一次取出多个元素,起始位置包括,结束位置不包括(顾头不顾尾) 如果取最后一个,而且不知道列表长度,可以使用负数(-1是最后一个,以此类推) 如果取最后几个,记住从左往 ...
- linux静态链接库
库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载 ...
- java-执行流程控制语句
就像有知觉的生物一样,程序必须在执行的过程中控制它的世界,并做出选择.java使用执行流程控制语句做出选择. 1.选择语句 if if(布尔表达式){ 业务逻辑1; }else{ 业务逻辑2: } s ...
- Matlab R2018a版离线使用帮助文档方法
转载自:Matlab R2018a版离线使用帮助文档方法 问题 Matlab R2018a版本安装后,帮助文档默认为在线方式,需要使用账号登录,如果没有激活密钥或许可证编号,就无法使用帮助文档了. 方 ...
- jquery table 发送两次请求 解惑
版本1.10 以下链接为一个较低版本解决方案: http://blog.csdn.net/anmo/article/details/17083125 而我的情况有点作, 情况描述: 1,一个页面两个t ...
- CodingLabs - MySQL索引背后的数据结构及算法原理
原文:CodingLabs - MySQL索引背后的数据结构及算法原理 首页 | 标签 | 关于我 | +订阅 | 微博 MySQL索引背后的数据结构及算法原理 作者 张洋 | 发布于 2011-10 ...
- python中利用少量代码快速实现从类对象中抽取所需属性的一种实践
项目中有可能会碰到这样一种场景: 根据一个id,查询得到和id对应的完整数据信息存储对象,比如书籍id到书籍详细信息,用户id到用户详细信息等,详细信息字段可能包括几十甚至上百个数据字段,真正需要返回 ...
- LimitedConcurrencyLevelTaskScheduler
//-------------------------------------------------------------------------- // // Copyright (c) Mic ...
- typescript语法
先来讲一讲TypeScript出现的背景 前端javascript的编程思想与后端java面向对象的编程思想有很大的不同,微软公司借鉴了coffeescript语言,继承了很多C#和java的编程思想 ...