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

  标题栏上所有的按钮或者其他元素都定义在xml文件里面,这些文件资源称为menu resource。要在标题栏添加按钮,需要在项目的/res/menu/路径下创建xml文件。

  假设给主界面MainActivity的标题栏添加按钮,在/res/menu/下新建一个main.xml文件(如果有就不用建了),在main.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>

--------------------------------------------------------下面是上面的代码的一些解释,可以跳过----------------------------------------------------------

一个item就是一个按钮。
 
android:id="@+id/action_settings"为这个按钮添加id。
 
android:icon="@drawable/ic_launcher"为这个按钮添加图标;
图标这 么设置的话,则一定要保证/res/drawable/下面有ic_launcher.png这个图片,/res/drawable/ic_launcher.png是程序启动用的图标,我现在项目里没有添加其它图标,所以暂时用这个图标。
 
android:orderInCategory="100"设置按钮的优先级,空间不够时优先显示值大的按钮(优先显示值大还是值小我目前还不太清楚)。
 
android:showAsAction="ifRoom"表示如果控件足够才显示。这个属性有5个值,描述分别如下:
 
ifRoom 剩余空间足够时才显示,不够时将隐藏在溢出列表中
never 从不在标题栏显示,隐藏在溢出列表中并且显示时只显示文本,所以定义item的时候最好带上android:title属性。
always 无论是否溢出,总会显示。
withText 图标和文本同时在标题栏显示,空间不足时文本可能显示不全。
collapseActionView 同一menu下其它按钮折叠到这个按钮上,用户点击这个时所有按钮才展开。(我是这么理解的,具体是不是没试过o(╯□╰)o)。

android:title="@string/action_settings" 设置按钮的文本。

 
注意:在比较老的安卓系统(比如Android 2.1)里面,android:showAsAction这样是不行的,showAsAction是由Surport Library提供的,所以你需要自定义XML namespace,并用这个namespace作为showAsAction的前缀,一般以项目名称给XML namespace命名,但也可以随便命名,例如HelloWorld的项目就用helloworld为XML namespace命名,像下面加粗部分:
<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>
-----------------------------------------------------------解释完毕,后面是剩下的步骤-----------------------------------------------------------
 
  然后,重写MainActivity的onCreateOptionsMenu函数,引用main.xml文件,将按钮添加到标题栏。在MainActivity.java中添加如下代码(已经存在该部分代码的话请对照修改):
@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的更多相关文章

  1. Toolbar 工具栏 菜单 标题栏 Menu

    要使用Toolbar,要先将标题栏(ActionBar)关掉: style.xml中:<style name="MainActivityTheme" parent=" ...

  2. 第一篇 入门必备 (Android学习笔记)

    第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具   ●Android之父 Android安迪·罗 ...

  3. Android标题栏上添加多个Menu按钮

    最近项目中碰到要在Android Menu旁边再添加一个按钮,而不是点击menu按钮然后在弹出一些选项. MainActivity代码: public class MainActivity exten ...

  4. 去掉标题栏/ActionBar后点击menu键时应用崩溃

    MainActivity 继承了 ActionBarActivity后,想要去掉标题栏(ActionBar),在程序中加上requestWindowFeature(Window.FEATURE_NO_ ...

  5. Android中通过ActionBar为标题栏添加搜索以及分享视窗

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...

  6. Android应用:StatusBar状态栏、NavigationBar虚拟按键栏、ActionBar标题栏、Window屏幕内容区域等的宽高

    一.屏幕中各种栏目以及屏幕的尺寸 当我们需要计算屏幕中一些元素的高度时,或许需要先获取到屏幕或者各种栏目的高度,下面这个类包含了Status bar状态栏,Navigation bar虚拟按键栏,Ac ...

  7. android 新建项目中去掉标题栏

    1.新建new android application project theme选none 并打钩创建一个Blank Activity 运行如下图所示: 2.若想把标题栏去掉,更改Manifestr ...

  8. 标题栏ToolBar

    使用标题栏ToolBar 首先需要在AndroidManifest.xml中修改 application主题或者activity主题       隐藏原生标题栏 在styles.xml中自定义主题 a ...

  9. ToolBar、ActionBar与Menu的纠葛(以及navigationIcon、setHomeButtonEnabled、setDisplayHomeAsUpEnabled)

    因为贴图的繁琐...所以下面是无图版...完整的在这里: 探究一下toobar和actionbar在使用menu时的吊诡情况 一.背景介绍 toolbar最近比较火,而且是出出来代替actionbar ...

随机推荐

  1. Net设计模式实例之建造者模式(Builder Pattern)

    一.建造者模式简介(Brief Introduction) 建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示. 建造者模式的优点是 ...

  2. Hibernate —— 检索策略

    一.Hibernate 的检索策略本质上是为了优化 Hibernate 性能. 二.Hibernate 检索策略包括类级别的检索策略.和关联级别的检索策略(<set> 元素) 三.类级别的 ...

  3. Keil环境中建立带FreeRTOS的STM32L项目

    本文是网上转载,版权所有. Keil环境中建立带FreeRTOS的STM32L项目 1.先把source文件夹复制至project目录,然后在keil中添加RTOS文件,如图: 其中heap_2.c按 ...

  4. LINQ to SQL语句(16)之对象标识

    对象标识 运行库中的对象具有唯一标识.引用同一对象的两个变量实际上是引用此对象的同一实例.你更改一个变量后,可以通过另一个变量看到这些更改. 关系数据库表中的行不具有唯一标识.由于每一行都具有唯一的主 ...

  5. java timer 执行任务

    1. 建立timer import java.util.Timer; import java.util.TimerTask; public class Start { public class Sta ...

  6. SQL注入—我是如何一步步攻破一家互联网公司的

    最近在研究Web安全相关的知识,特别是SQL注入类的相关知识.接触了一些与SQL注入相关的工具.周末在家闲着无聊,想把平时学的东东结合起来攻击一下身边某个小伙伴去的公司,看看能不能得逞.不试不知道,一 ...

  7. MVC基础

    一.简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方 ...

  8. 一步一步HTML5粒子编辑器

    写在前面 大家阅读此文之前,可以先看一篇MiloYip的文章:用JavaScript玩转游戏物理(一)运动学模拟与粒子系统,看完之后再看此文,更加容易理解. MiloYip使用的粒子是canvas中绘 ...

  9. SharePoint 2013 对二进制大型对象(BLOB)进行爬网

    本文是参考MSDN文档做的示例,SharePoint 2013搜索二进制对象(BLOB),通过外部内容类型的方式将外部数据与SharePoint相关联,修改BCD模型,使SharePoint能够爬网外 ...

  10. AJAX请求详解 同步异步 GET和POST

    AJAX请求详解 同步异步 GET和POST 上一篇博文(http://www.cnblogs.com/mengdd/p/4191941.html)介绍了AJAX的概念和基本使用,附有一个小例子,下面 ...