Android 加入一个动作按钮
在XML中声明一个动作按钮
所有的动作按钮和其他的可以利用的items都定义在menu资源文件夹中的XML文件中。为了增加一个动作按钮到工具栏,需要在工程 /res/menu/ 目录下面创建一个新的XML文件。
对每个需要添加的item增加一个<item>元素包含到工具栏中,例如 res/menu/main_activity_actions.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="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"
yourapp:showAsAction="ifRoom" />
...
</menu>
上面声明了查询动作应该以一个动作按钮出现当工具栏中的空间是足够大的时候。但是设置动作按钮应该溢出的(默认的情况下,所有的动作按钮都是溢出的,但是对于每个你将要设计的动作都应该明确的声明,这是个好的实践)。
图标icon属性attribute需要一个图像资源ID,跟在 @drawable/后面的名字必须是一个bitmap图像,这个图像需要保存 工程目录 /res/drawable/ 下面。 例如
"@drawable/ic_action_search" 指的就是 ic_action_search.png。 (每个图像资源最好能提供四个不同大小的形式分别放在drawable-*四个文件夹下)类似的, 主题title属性使用一个字符串资源,这个字符串资源由一个XML文件定义在 res/values/ 目录下面。
注意: 当需要为你的程序创建一个icons图标时或者其他的bitmap时,一定要提供多种版本使得不同的图标适应不同大小的屏幕。关于这个的更多的讨论将在《支持不同的屏幕》这节课中讨论到。
如果你使用的支持库(support Library)可以兼容最低至Android2.1,那么showAsAction属性不能android:namespace这样使用。 相反,这个属性是由支持库提供的并且你必须自己定义XML命名空间并使用这个命名空间作为属性前缀。
将动作添加到工具栏
要将菜单项 menu items添加到工具栏,可以在Activity中重载onCreateOptionsMenu()方法 并将菜单资源填充(inflate)到给定的菜单对象中。例如,
@Overridepublic boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
响应动作按钮
当用户按下某个动作按钮时,系统调用 activity的onOptionsItemSelected()函数。在重载这个方法时,调用 getItemId()函数来确定MenuItem中哪个item被按下, 返回的ID和在<item>元素中响应的 android:id属性相匹配。
@Overridepublic boolean onOptionsItemSelected(MenuItem item)
{
// Handle presses on the action bar items
switch (item.getItemId())
{
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
然后通过调用setDisplayHomeAsUpEnabled()使得这个应用程序图标向上弹起让它可以使用
@Overridepublic void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaymessage);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// 如果你的SDK版本是11以上的,那么用
// getActionBar().setDisplayHomeAsUpEnabled(true);
}
因为系统知道MainActivity对于DisplayMessageActivity来说是父活动( parent activity), 当用户按下按钮时,系统恰当的自动导航到父活动(用户不必自己处理按钮的事件。
Android 加入一个动作按钮的更多相关文章
- android 让一个控件按钮居于底部的几种方法
android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_ ...
- [转]android 让一个控件按钮居于底部的几种方法
本文转自:http://www.cnblogs.com/zdz8207/archive/2012/12/13/2816906.html android 让一个控件按钮居于底部的几种方法 1.采用lin ...
- 确认(confirm 消息对话框)语法:confirm(str); 消息对话框通常用于允许用户做选择的动作,如:“你对吗?”等。弹出对话框(包括一个确定按钮和一个取消按钮)
确认(confirm 消息对话框) confirm 消息对话框通常用于允许用户做选择的动作,如:"你对吗?"等.弹出对话框(包括一个确定按钮和一个取消按钮). 语法: confir ...
- Android ImageButton Example 图片按钮
Android ImageButton Example 图片按钮 使用“android.widget.ImageButton” 展现一个具有背景图片的按钮 本教程将展现一个具有名字为 c.png背景图 ...
- Android 按下电源按钮关闭小学习过程的整个长度
Android 按下电源按钮关闭小学习过程的整个长度 近期研究了一下android关机跟又一次启动功能,看了一些长按电源键到弹出关机对话框,到真正关机的一系列处理过程. 首先还是来看看这个长按电源键都 ...
- Android实现渐显按钮的左右滑动效果
本示例演示在Android中实现带渐显按钮的左右滑动效果. 关于滑动效果,在我的上一篇博文中提到过,有兴趣的朋友可以访问: http://www.cnblogs.com/hanyonglu/archi ...
- [UWP]创建一个进度按钮
1. 前言 最近想要一个进度按钮. 传统上UWP上处理进度可以这样实现,首先是XAML,包括一个ProgressBar和一个按钮: <StackPanel Orientation="H ...
- android开发_文本按钮 与 输入框
1 TextView: 属性与值 android:text="文本" android:textSize="20sp" //sp为 ...
- Android学习之Button按钮在程序运行时全部变大写的处理
问题: 在layout布局文件中,我们命名的按钮名称是“button1”,程序运行过后,在app上显示出来的是“BUTTON1”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...
随机推荐
- cocos2dx游戏开发——微信打飞机学习笔记(十一)——GameOverScene的搭建
一.创建文件~ GameOverScene.h GameOverScene.cpp GameOverLayer.h GameOverLayer.cpp 二.How to do? 就是加入一个转场就好~ ...
- Android,visibility属性
Android,visibility属性 1) 可见(visible)XML文件:android:visibility="visible"Java代码:view.setVisibi ...
- 调整linux的时钟
想把linux时钟调整的正常了. 网上找了找资料,找到了同步办法: http://blog.51yip.com/server/1474.html 即使用: sudo yum install ntp s ...
- hdu 5753 Permutation Bo
这里是一个比较简单的问题:考虑每个数对和的贡献.先考虑数列两端的值,两端的摆放的值总计有2种,比如左端:0,大,小:0,小,大:有1/2的贡献度.右端同理. 中间的书总计有6种可能.小,中,大.其中有 ...
- python 返回函数
返回函数 Python的函数不但可以返回int.str.list.dict等数据类型,还可以返回函数! 例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写: def f(): print ...
- 2016.7.9 计算机网络复习要点第四章之网际控制报文协议ICMP
1.ICMP允许主机或路由器报告差错情况和提交有关异常情况的报告:为了更有效地转发IP数据报和提高交付成功的机会: 2.ICMP不是高层协议,因为ICMP报文是装在IP数据报中的,作为其中数据部分,所 ...
- javascript优化--03高质量编码
使用Object的直接量实例构造轻量级的字典: 使用for/in循环,使用对象字面量来构建,并确保不增加Object.prototype属性来导致for/in循环:(考虑到兼容性,如Array.pro ...
- 寒假D1 B
B - B Crawling in process... Crawling failed Time Limit:0MS Memory Limit:0KB 64bit IO Format ...
- jQuery对象和DOM对象之间的相互转换
DOM对象:DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成为一棵树,DOM对象可以使用javascript中的方法. jQuery对象:jQuery对象就 ...
- POJ3057 Evacuation(二分图最大匹配)
人作X部:把门按时间拆点,作Y部:如果某人能在某个时间到达某门则连边.就是个二分图最大匹配. 时间可以二分枚举,或者直接从1枚举时间然后加新边在原来的基础上进行增广. 谨记:时间是个不可忽视的维度. ...