标题栏Menu
标题栏menu就是指下图中红框里面的菜单按钮。

标题栏上所有的按钮或者其他元素都定义在xml文件里面,这些文件资源称为menu resource。要在标题栏添加按钮,需要在项目的/res/menu/路径下创建xml文件。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.lidi.helloworld.MainActivity" > <item
android:id="@+id/action_settings"
android:icon="@drawable/ic_launcher"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action_settings"/> </menu>
--------------------------------------------------------下面是上面的代码的一些解释,可以跳过----------------------------------------------------------
| ifRoom | 剩余空间足够时才显示,不够时将隐藏在溢出列表中 |
| never | 从不在标题栏显示,隐藏在溢出列表中并且显示时只显示文本,所以定义item的时候最好带上android:title属性。 |
| always | 无论是否溢出,总会显示。 |
| withText | 图标和文本同时在标题栏显示,空间不足时文本可能显示不全。 |
| collapseActionView | 同一menu下其它按钮折叠到这个按钮上,用户点击这个时所有按钮才展开。(我是这么理解的,具体是不是没试过o(╯□╰)o)。 |
android:title="@string/action_settings" 设置按钮的文本。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:helloworld="http://schemas.android.com/apk/res-auto" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
helloworld:showAsAction="ifRoom" /> ... </menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
然后给按钮添加功能。用户点击item的时候,系统会调用该Activity的onOptionsItemSelected函数,所以我接下来要实现这个函数来给按钮添加功能。这个函数需要判断用户点击了哪个按钮,我们可以用getItemId()函数来获取被点击的item的id,并根据id的不同执行不同的命令。onOptionsItemSelected函数代码如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_settings:
//省略执行功能的代码
return true;
default:
return super.onOptionsItemSelected(item);
}
}
由于我只添加了一个item,其id是action_settings,所以我这里只写一个case,如果有多个item,就得写多个case,比如假如我有在main.xml里面添加了一个item,设置其id为action_search,我就需要在上面的switch块里面添加下面这样一个case:
case R.id.action_search:
//省去执行功能的代码
return true;
到这里,给标题栏添加按钮,并给按钮添加点击事件就完成了。
标题栏Menu的更多相关文章
- Toolbar 工具栏 菜单 标题栏 Menu
要使用Toolbar,要先将标题栏(ActionBar)关掉: style.xml中:<style name="MainActivityTheme" parent=" ...
- 第一篇 入门必备 (Android学习笔记)
第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具 ●Android之父 Android安迪·罗 ...
- Android标题栏上添加多个Menu按钮
最近项目中碰到要在Android Menu旁边再添加一个按钮,而不是点击menu按钮然后在弹出一些选项. MainActivity代码: public class MainActivity exten ...
- 去掉标题栏/ActionBar后点击menu键时应用崩溃
MainActivity 继承了 ActionBarActivity后,想要去掉标题栏(ActionBar),在程序中加上requestWindowFeature(Window.FEATURE_NO_ ...
- Android中通过ActionBar为标题栏添加搜索以及分享视窗
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...
- Android应用:StatusBar状态栏、NavigationBar虚拟按键栏、ActionBar标题栏、Window屏幕内容区域等的宽高
一.屏幕中各种栏目以及屏幕的尺寸 当我们需要计算屏幕中一些元素的高度时,或许需要先获取到屏幕或者各种栏目的高度,下面这个类包含了Status bar状态栏,Navigation bar虚拟按键栏,Ac ...
- android 新建项目中去掉标题栏
1.新建new android application project theme选none 并打钩创建一个Blank Activity 运行如下图所示: 2.若想把标题栏去掉,更改Manifestr ...
- 标题栏ToolBar
使用标题栏ToolBar 首先需要在AndroidManifest.xml中修改 application主题或者activity主题 隐藏原生标题栏 在styles.xml中自定义主题 a ...
- ToolBar、ActionBar与Menu的纠葛(以及navigationIcon、setHomeButtonEnabled、setDisplayHomeAsUpEnabled)
因为贴图的繁琐...所以下面是无图版...完整的在这里: 探究一下toobar和actionbar在使用menu时的吊诡情况 一.背景介绍 toolbar最近比较火,而且是出出来代替actionbar ...
随机推荐
- 【Python实战】Pandas:让你像写SQL一样做数据分析(二)
1. 引言 前一篇介绍了Pandas实现简单的SQL操作,本篇中将主要介绍一些相对复杂一点的操作.为了方便后面实操,先给出一份简化版的设备统计数据: 0 android NLL 387546520 2 ...
- centos6搭建gitlab
前言 原来的项目放在公网的gitlab上,处于安全考虑,在内网搭建一套,有图形界面,可以直接从外网git导入进来,使用了一下觉得挺方便,把安装流程记录下来,参考官网:https://gitlab.co ...
- IIS与ASP.NET管道
IIS 5.x与ASP.NET 我们先来看看IIS 5.x是如何处理基于ASP.NET资源(比如.aspx,.asmx等)请求的,整个过程基本上可以通过图1体现. IIS 5.x运行在进程InetIn ...
- git切换到远程分支
远程仓库 git clone 下来,当你执行 git branch,你只会看到 * master 并不会看到其他分支,即便远程仓库上有其他分支,使用 git branch -va 可以查看本地+远程分 ...
- string转byte[]
static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buff ...
- EF架构~EF异步改造之路~让DbContextRepository去实现异步接口
回到目录 返回异步与并行目录 上一讲中,我们定义了三个异步操作接口,这回我们将对它进行实现,而有一个基础知识需要大家清楚,那就是实现接口的方式,一般我们使用默认的方式(隐式实现),这种方法实现的接口方 ...
- 【Java每日一题】20161209
package Dec2016; public class Ques1209 { public static void main(String[] args){ People g = new Peop ...
- http cancelled状态与ajax 超时
在最近一周,我们的前端在测试某些批量超过的某个步骤时,发现请求好像发出来,但是后台状态没有变化,说是最近才出现的问题,以前一直都是正常的,两天连续出现两次之后,来找笔者,首先检查了下中间件的日志,发现 ...
- Java基础学习 -- I/O系统、流
Java类库里有四个表示流的抽象父类:InputStream.OutputStream.Reader.Writer. 其中 InputStream 和 OutputStream 是对字节进行操作的输入 ...
- CSS float
我们来看看CSS重要属性--float. 以下内容分为如下小节: 1:float属性 2:float属性的特性 2.1:float之文字环绕效果 2.2:float之父元素高度塌陷 3:清除浮 ...