Android开发UI之添加Action按钮
来源:互联网 发布:时间胶囊软件 编辑:程序博客网 时间:2024/05/16 10:59
前言
Action bar 允许你为当前上下文中最重要的操作添加按钮。那些直接出现在 action bar 中的 icon 和/或 文本被称作action buttons(操作按钮)。安排不下的或不足够重要的操作被隐藏在 action overflow 中。如下图所示:
在 XML 中指定操作
所有的操作按钮和 action overflow 中其他可用的条目都被定义在 菜单资源 的 XML 文件中。通过在项目的 res/menu 目录中新增一个 XML 文件来为 action bar 添加操作。
为你想添加到 action bar 中的每个条目添加一个 元素。例如:
res/menu/main_activity_actions.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 搜索, 应该作为动作按钮展示--> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" android:showAsAction="ifRoom" /> <!-- 设置, 在溢出菜单中展示 --> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:showAsAction="never" /></menu>
上述声明是这样的,当 action bar 有可用空间时,检索操作将作为一个操作按钮来显示,但设置操作将一直只在 action overflow 中显示。(默认情况下,所有的操作都显示在 action overflow 中,但为每一个操作指明设计意图是很好的做法。)
icon 属性要求每张图片提供一个 resource ID。在 @drawable/ 之后的名字必须是存储在项目目录 res/drawable/ 下图片的名字。例如:ic_action_search.png 对应 “@drawable/ic_action_search”。同样地,title 属性使用通过 XML 文件定义在项目目录 res/values/ 中的一个 string resource。
Note:当在创建 icon 和其他 bitmap 图片时,你得为优化不同屏幕密度下的显示效果提供多个版本,这一点很重要。
如果你为了兼容 Android 2.1 的版本使用了 Support 库,在 android 命名空间下 showAsAction 属性是不可用的。Support 库会提供替代它的属性,你必须声明自己的 XML 命名空间,并且使用该命名空间作为属性前缀。(一个自定义 XML 命名空间需要以你的 app 名称为基础,但是可以取任何你想要的名称,它的作用域仅仅在你声明的文件之内。)例如:
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" > <!-- 搜索, 应该展示为动作按钮 --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" yourapp:showAsAction="ifRoom" /> ...</menu>
为 Action Bar 添加操作
为 action bar 布局菜单条目,是通过在 activity 中实现 onCreateOptionsMenu() 回调方法来 inflate 菜单资源从而获取 Menu 对象。例如:
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // 为ActionBar扩展菜单项 MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions, menu); return super.onCreateOptionsMenu(menu);}
为操作按钮添加响应事件
当用户按下某一个操作按钮或者 action overflow 中的其他条目,系统将调用 activity 中onOptionsItemSelected()回调方法。在该方法的实现里面调用MenuItem的getItemId()来判断哪个条目被按下 - 返回的 ID 会匹配你声明对应的 元素中 属性的值。
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { // 处理动作按钮的点击事件 switch (item.getItemId()) { case R.id.action_search: openSearch(); return true; case R.id.action_settings: openSettings(); return true; default: return super.onOptionsItemSelected(item); }}
为下级 Activity 添加向上按钮
在不是主要入口的其他所有屏中(activity 不位于主屏时),需要在 action bar 中为用户提供一个导航到逻辑父屏的up button(向上按钮)。如下图所示:
当运行在 Android 4.1(API level 16) 或更高版本,或者使用 Support 库中的 ActionBarActivity 时,实现向上导航需要你在 manifest 文件中声明父 activity ,同时在 action bar 中设置向上按钮可用。
如何在 mainfest 中声明一个 activity 的父辈,例如:
<application ... > ... <!-- 主 main/home 活动 (没有上级活动) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- 主活动的一个子活动--> <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- meta-data 用于支持 support 4.0 以及一下来指明上级活动 --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity></application>
然后,通过调用setDisplayHomeAsUpEnabled() 来把 app icon 设置成可用的向上按钮:
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_displaymessage); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // 如果你的minSdkVersion属性是11活更高, 应该这么用: // getActionBar().setDisplayHomeAsUpEnabled(true);}
由于系统已经知道 MainActivity 是 DisplayMessageActivity 的父 activity,当用户按下向上按钮时,系统会导航到恰当的父 activity - 你不需要去处理向上按钮的事件。
- Android开发UI之添加Action按钮
- Android UI ActionBar功能-在 Action Bar 上添加按钮
- Android官方开发文档Training系列课程中文版:添加ActionBar之添加Action按钮
- Android UI开发之Action Bar
- Android开发入门之添加Action BAR
- Android开发之为按钮添加音效
- android开发之添加按钮事件的方法
- 2.2 添加action按钮
- ActionBar -- 添加Action按钮
- 添加Action 按钮
- Android UI开发——Action Bar
- Android UI开发——Action Bar
- Android UI开发神兵利器之Android Action Bar Style Generator
- Android开发之UI
- 自定义Android Action Bar,标题和按钮可以动态添加
- Android官方入门文档[6]添加Action按钮
- [android ui]ActionBar的Action图标区添加
- Android开发之Intent.Action
- synchronized 用法总结 .
- Rhel6.6_Oracle11gR2(ASM,UDEV)的RAC搭建安装
- hdfs数据压缩方案
- 随笔using namespace xxx
- 关于子线程和Handler 的用法
- Android开发UI之添加Action按钮
- iOS之图片处理
- performSelector用法
- 系统升级到iOS9,真机运行报“was compiled with optimization - stepping may behave oddly...”,闪退
- 实时推送-androidpn 客户端代码分析
- muduo库阅读(25)——Net部分:服务器端的套接字类
- jquery插件
- html5 hash
- html 中javascript 页面加载完成后执行函数