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”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...
随机推荐
- APP性能分析1
我们使用云测试平台对产品进行了性能测试,情况如下: 详见这里.
- android JNI调用(转)
Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwi ...
- Touch 事件的分发和消费机制
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(四)码农网
17. 安装 Webmin Webmin 是基于 Web 的 Linux 配置工具.它像一个中央系统,用于配置各种系统设置,比如用户.磁盘分配.服务以及 HTTP 服务器.Apache.MySQL 等 ...
- jq验证插件validate
博客: http://www.cnblogs.com/linjiqin/p/3433635.html http://blog.csdn.net/windxxf/article/details/7520 ...
- linux根分区扩容
Linux 根分区扩容 1.fdisk –l (红线部分为新添加的硬盘) 2.磁盘格式化 3. mkfs.ext3 -T largefile /dev/sde(格式化上面的分区) 4. vgdisp ...
- CDH中,执行HIVE脚本表联查权限问题。。
文章来自http://www.cnblogs.com/hark0623/p/4174641.html 转发请注明 有时候执行表联查的时候总会出现没有权限写文件的情况. 这个时候使用sudo -H hi ...
- LoadRunner中取Request、Response
LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...
- Windows自带Android模拟器启动失败
Windows自带Android模拟器启动失败 错误信息:[Critical] XDE Exit Code: InvalidArguments (3)XDE执行的第三个参数为设置内存值,形式为/mem ...
- LightOJ1013 Love Calculator(DP)
容易猜测到包含s1.s2序列的串的最短长度是LCS(s1,s2) + ( len(s1) - LCS(s1,s2) ) + ( len(s2) - LCS(s1,s2) ) ,即: len(s1)+l ...