android Menu 笔记
菜单是应用中常见的用户组件。本文介绍如何在布局文件和代码中添加menu,submenu以及在代码中添加的方法。
参考链接
https://developer.android.com/guide/topics/ui/menus.html?hl=zh-cn
http://www.cnblogs.com/smyhvae/p/4133292.html
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.menutest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
menu的布局文件
放置了一个start选项,以及一个set选项,并在set里面设置了2个子菜单set1和set2.
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/start"
android:title="start"
app:showAsAction="always" />
<item
android:id="@+id/set"
android:title="set"
app:showAsAction="always" >
<menu>
<item
android:id="@+id/set1"
android:title="set1"
app:showAsAction="always" />
<item
android:id="@+id/set2"
android:title="set2"
app:showAsAction="always" />
</menu>
</item>
</menu>
清单文件
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.menutest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.java
重写onCreateOptionsMenu (Menu menu)函数,并调用inflate(R.menu.main_menu, menu)。这样menu的布局文件中的空间才会显示出来。
重写onOptionsItemSelecte()对菜单的点击事件进行监听。
addSubMenu()添加子菜单。并调用add()函数在子菜单中添加选项。
调用menu.add()在菜单中添加一个选项。
package com.example.menutest;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private static final int CONF_ITEM = Menu.FIRST;
private static final int CONF_ITEM_1= Menu.FIRST + 1;
private static final int CONF_ITEM_2 = Menu.FIRST + 2;
private static final int STOP_ITEM = Menu.FIRST + 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu (Menu menu) {
int groupId = 0;
/*
* 添加子菜单,并在子菜单中添加选项
* addSubMenu(final int groupId, final int itemId, int order, final CharSequence title);
* groupId: 组ID,有时候会将菜单放在同一个组中,同时对组进行相关的设置。
* itemId: 选项的id。点击选项的时候会根据这个来进行区分。
* order: 顺序
* title: 选项的标题
*/
SubMenu sub1 = menu.addSubMenu(groupId, CONF_ITEM, Menu.NONE, "CONF");
/*
* 为子菜单中添加选项。
* add(int groupId, int itemId, int order, CharSequence title);
* groupId: 组ID,有时候会将菜单放在同一个组中,同时对组进行相关的设置。
* itemId: 选项的id。点击选项的时候会根据这个来进行区分。
* order: 顺序
* title: 选项的标题
*/
sub1.add(groupId, CONF_ITEM_1, Menu.NONE, "CONF_1");
sub1.add(groupId, CONF_ITEM_2, Menu.NONE, "CONF_2");
// 添加一个菜单选项
menu.add(groupId + 1, STOP_ITEM, Menu.NONE, "STOP");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
Toast.makeText(getBaseContext(), "start", Toast.LENGTH_SHORT).show();
break;
case R.id.set:
Toast.makeText(getBaseContext(), "setting", Toast.LENGTH_SHORT).show();
break;
case R.id.set1:
Toast.makeText(getBaseContext(), "set 1", Toast.LENGTH_SHORT).show();
break;
case R.id.set2:
Toast.makeText(getBaseContext(), "set 2", Toast.LENGTH_SHORT).show();
break;
case STOP_ITEM:
Toast.makeText(getBaseContext(), "stop", Toast.LENGTH_SHORT).show();
break;
case CONF_ITEM:
Toast.makeText(getBaseContext(), "conf", Toast.LENGTH_SHORT).show();
break;
case CONF_ITEM_1:
Toast.makeText(getBaseContext(), "conf 1", Toast.LENGTH_SHORT).show();
break;
case CONF_ITEM_2:
Toast.makeText(getBaseContext(), "conf 2", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
Tony Liu
2017-3-16, Shenzhen
android Menu 笔记的更多相关文章
- 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单
目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...
- 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...
- 【转】Pro Android学习笔记(三十):Menu(1):了解Menu
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- 【转】Android开发笔记(序)写在前面的目录
原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...
- [置顶] Android开发笔记(成长轨迹)
分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...
随机推荐
- 做一个新产品需求,体验的分析文档?(例:喜马拉雅FM)
2.1 战略层 2.11 产品定位: 一款产品覆盖面广,收听节目种类齐全,资源丰富的电台APP. 以PGC为主流,通过合作方式吸纳专业的电台人,节目人,行业名人分享内容. 融合UGC,满足人们在空闲时 ...
- oracle启动、关闭
windows上启动关闭 http://www.cnblogs.com/victor_chou/archive/2009/07/09/1519594.html
- 安装ubuntu和windows双系统后,如何修改默认启动项
在安装了Ubuntu16.04系统之后,系统会默认自启动Ubuntu16.04,而我们大多数情况下可能都在使用windows系统,不修改默认设置,不经意间便会启动了Ubuntu16.04,通过我的经历 ...
- Cordic算法简介
作者:桂. 时间:2017-08-14 19:22:26 链接:http://www.cnblogs.com/xingshansi/p/7359940.html 前言 CORDIC算法常用来求解信号 ...
- Linux下安装配置Redis
一 下载并安装 (1)下载: [root@localhost src]# wget http://download.redis.io/releases/redis-3.2.5.tar.gz (2)安装 ...
- Android开发16——获取网络资源之基础应用
一.项目背景在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据.本博文介绍了获取另一个web项目的资源.有一个web项目,在其WebRoot文件夹下 ...
- 李洪强和你一起学习前端之(6)css行高,盒模型,外边距
李洪强和你一起学习前端之(6)css行高,盒模型,外边距 复习昨天的知识 1.1css书写位置: 内嵌式写法 外联式写法 <link href = "1.css" rel = ...
- windows党码农在linux下你最需要的软件列表TOP10
NO 10.QQ 神奇的TX,经常更新接口,使得linux社区的模仿软件总是跟不上步伐,一整就不能登陆使用.可是老大,您怎么自从2009-01-04发布了第一版QQ for Linux 1.0 Bet ...
- Python IDLE快捷键【转载合集】
转载自:http://www.douban.com/note/212321426/ 编辑状态时:Ctrl + [ .Ctrl + ] 缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 A ...
- python content list(1--4)
part 1 python language 1. environment building and config 2. variable and data type 3. programming b ...