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

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="@dimen/layout_height_44"
        android:background="@color/background_yellow"
        android:contentInsetLeft="0dp"
        android:contentInsetStart="0dp"
        android:theme="@style/ToolbarTheme"
        android:minHeight="?attr/actionBarSize"
        android:padding="0dp"
        app:navigationIcon="@mipmap/left_back"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:titleTextAppearance="@style/Toolbar.TitleText">

    <TextView
            android:id="@+id/toolbar_title"
            style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="@dimen/text_size_15"
            android:textColor="@color/textcolor_black"/>

    <TextView
            android:id="@+id/toolbar_menu_title"
            style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:paddingRight="15dp"
            android:textSize="@dimen/text_size_15"/>

</android.support.v7.widget.Toolbar>

在 XML 中指定操作

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

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

res/menu/main_activity_actions.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/toolbar_action1"
        android:icon="@mipmap/screen"
       android:title="Action"
       app:showAsAction="always"/>

    <item
        android:id="@+id/toolbar_action2"
        android:icon="@mipmap/add_right"
        android:title="Action"
        app:showAsAction="always"/>

</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 资源


为 Action Bar 添加操作

要为 action bar 布局菜单条目,就要在 activity 中实现 onCreateOptionsMenu() 回调方法来 inflate 菜单资源从而获取 Menu 对象。例如:

@Override
public 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 属性的值。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int i = item.getItemId();if (i == R.id.toolbar_action1) {
        mDrawerLayout.openDrawer(llDrawerContent);return true;} else if (i == R.id.toolbar_action2) {// do something
        View img = this.findViewById(R.id.toolbar_action2);topRightDialog(img);return true;} else {
        return super.onOptionsItemSelected(item);}
}

为下级 Activity 添加向上按钮

在不是程序入口的其他所有屏中(activity 不位于主屏时),需要在 action bar 中为用户提供一个导航到逻辑父屏的up button(向上按钮)

通过调用setDisplayHomeAsUpEnabled() 来把 app icon 设置成可用的向上按钮:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);setContentView(R.layout.activity_displaymessage);
// 如果你的minSdkVersion属性是11或更高:getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}


android添加ActionBar相关推荐

  1. Android官方开发文档Training系列课程中文版:添加ActionBar之设置ActionBar

    导言- 添加ActionBar 原文地址:http://android.xsoftlab.net/training/basics/actionbar/index.html ActionBar是很多重要 ...

  2. android开发actionbar,Android 开发之为ActionBar 添加Actionbar Button

    前几天做App 的时候,做的比较仓促,就没有添加返回按钮,还有就是MainActivity 的Theme 怎么传递到其他Activity 中,今天无意中看到官方的Train,所以就记下来啦,顺便吧Ac ...

  3. 【Android】ActionBar的使用(1)

    前(fei)言(hua):转行iOS开发半年,很久没接触Android了,前几天去上课,听着实在无聊,随手拿了同学的一本<Android UI设计>,发现有好多基础知识自己虽然用过,但是都 ...

  4. android 自定义命名空间,Android自定义ActionBar实例

    本文实例讲述了android自定义actionbar的实现方法.分享给大家供大家参考.具体实现方法如下: android 3.0及以上已经有了actionbar的api,可以通过引入support p ...

  5. Android之ActionBar

    本文主要包括以下内容 ActionBar的显示及隐藏,添加图标,返回主页 ActionBar添加ActionView,添加ActionProvider ActionBar实现Tab ActionBar ...

  6. 2013-2-19 Android之ActionBar学习(转)

    2013-2-19 Android之ActionBar学习(转) Android之ActionBar学习 - Android移动开发技术文章_手机开发 - 红黑联盟 资讯 |  安全 |  论坛 |  ...

  7. android 之 ActionBar

    一  前言 Action bar就是替换3.0以前的tittle bar和menu. App Icon:可显示软件icon,也可用其他图标代替.当软件不在最高级页面时,图左侧会显示一个左箭头,用户可以 ...

  8. android+启动脚本,imx6q android 添加开机启动脚本

    1.在xx/out/target/product/sabresd_6dq/root/init.rc中添加以下内容 ========================================== ...

  9. android 添加广告用proguard混淆后不显示问题解决方法

    android 添加有米广告,打开proguard混淆后,广告不显示了,解决方法是keep所有引用的jar package 1 -keep public class net.youmi.android ...

最新文章

  1. 张钹院士:可解释、可理解是人工智能研究的主攻方向 | CCF-GAIR 2018
  2. 致所有IT工程师的信(网络工程师的发展方向)
  3. java之父求职_Java求职实战之继承和多态
  4. 在腾讯云控制台上对域名进行续费
  5. idea 错误: 找不到或无法加载主类(汇总贴)
  6. logback之使用demo
  7. jquery统计字数的小功能
  8. 解决文件名太长或文件夹路径太深无法删除
  9. caxa线切割怎样画链轮,收藏:Autocad实战教程-线切割画链轮
  10. SpringMVC的工作原理及组件
  11. 基于单片机的水温液位监测系统设计(#0513)
  12. 深圳神州行今日起单向收费 零月租成套餐亮点
  13. win7怎么查看计算机主板,win7怎么看主板型号 win7看主板型号方法【图文】
  14. TCP IP协议之初识
  15. 2018 谷歌 Google I/O 简介 总结
  16. PDF如何在线翻译?PDF在线翻译的方法
  17. 读书笔记-在工作中保持充沛的体力
  18. ftp服务器下载,绿色版ftp服务器下载,以及ftp上传工具使用指南
  19. 网页设计与网站规划 作业21 圣诞节壁纸制作
  20. 亚索全部语音原声mp3_常见语音模块的语音格式有哪些

热门文章

  1. 计算机虽然具有强大的功能但它目前还不能,大学计算机基础考试模拟题一.docx...
  2. DatePicker日期选择器
  3. 知网垄断实锤,遭8760万「天价罚单」制裁!撬动知网第一人,九旬教授赵德馨回应
  4. sheng的学习笔记-synchronized底层实现原理
  5. 上采样、下采样、过采样、欠采样
  6. linux用户间文件互传,windows和linux间互传文件
  7. 我是如何同时在字节和微信成功拿到实习转正offer
  8. mysql与mongo数据库的优缺点比较
  9. 渗透测试方法论5---测试会话管理机制
  10. 负载均衡的三种实现方式