<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中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...
随机推荐
- Apache httpd Server Notes
1. httpd启动.停止以及重启 启动: apachectl –f $PATH_TO_CONF/httpd.conf 停止及重启 apachectl –k stop/restart/graceful ...
- python生成器函数中return的作用
当生成器函数中含有return时,return不会返回任何值,会直接终止当前生成器,对yield的作用没有影响,当函数执行到return时候,调用next()来执行生成器则会报错,如果使用for循环遍 ...
- 【Hive五】Hive函数UDF
Hive函数 系统自带的函数 查看系统自带的函数 查看系统自带的函数 show functions; 显示自带的函数的用法 desc function upper; 详细显示自带的函数的用法 desc ...
- 使用ntp协议同步本地时间(C语言)
使用ntp协议同步本地时间 同步服务器使用的东北大学网络授时服务:ntp.neu.edu.cn更多ntp服务器 http://www.ntp.org.cn/ 源代码来自网络,经本人精简ntp部分,供大 ...
- 请求报文的方法及get与post的区别
请求报文的方法及get与post的区别 请求的起始以方法作为开始,方法用来告诉服务器要如何做. 在开发中通常有两种请求方式. get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 ...
- ACM1000:A + B Problem
Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to ...
- 1010 一元多项式求导 (25 分) C语言
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...
- mac下使用git的冲突的解决方案
博主之前一直是在windows系统下进行软件代码的开发,window下有很多git的使用工具,如tortoisegit等是个很好的git项目管理工具.而再mac版下的git项目代码管理工具,本人找了好 ...
- uCrop 源码剖析
GitHub: uCrop, 版本为 2.2.2 主要是探究一下内部对于图片按比例的裁剪以及压缩, 应该会更很长一段时间 疑惑点 这里记下一些源码分析过程中遇到的疑惑点 sample/src/main ...
- day 3 创建窗口,移动-函数版
1.创建窗口 #-*- coding:utf-8 -*- import pygame import time def main(): #1.创建窗口 screen = pygame.display.s ...