添加Action 按钮

来源:互联网 发布:医疗器械国家数据库 编辑:程序博客网 时间:2024/06/07 12:32


编写:Vincent 4J - 原文:http://developer.android.com/training/basics/actionbar/adding-buttons.html

Action bar 允许我们为当前环境下最重要的操作添加按钮。那些直接出现在 action bar 中的 icon 和/或文本被称作action buttons(操作按钮)。安排不下的或不足够重要的操作被隐藏在action overflow (超出空间的action,译者注)中。

actionbar-actions

图 1. 一个有search操作按钮和 action overflow 的 action bar,在 action overflow 里能展现额外的操作。



所有的操作按钮和 action overflow 中其他可用的条目都被定义在 menu资源 的 XML 文件中。通过在项目的 res/menu 目录中新增一个 XML 文件来为 action bar 添加操作。

为想要添加到 action bar 中的每个条目添加一个 <item> 元素。例如:

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>




上述代码中android:showAsAction现在不能用

改为app:showAsAction

showAsAction的属性

       1,always:这个值会使菜单项一直显示在Action Bar上。
  2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
  3、never:这个值使菜单项永远都不出现在Action Bar上。
  4、withText:这个值使菜单项和它的图标,菜单文本一起显示。

上述代码声明,当 action bar 有可用空间时,搜索操作将作为一个操作按钮来显示,但设置操作将一直只在 action overflow 中显示。(默认情况下,所有的操作都显示在 action overflow 中,但为每一个操作指明设计意图是很好的做法。)



为 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 会匹配我们声明对应的 <item> 元素中 android:id 属性的值。

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    // 处理动作按钮的点击事件    switch (item.getItemId()) {        case R.id.action_search:            //这里可以写自定义的方法            return true;        case R.id.action_settings:            openSettings();            return true;        default:            return super.onOptionsItemSelected(item);    }}


0 0
原创粉丝点击