目录

Toolbar

Toolbar 加上 menu

Toolbar 设置 Theme

完整 Demo

Toolbar

Toolbar 是在 Android 5.0 开始推出的一个 Materal Design 风格的导航控件 ,Google 非常推荐大家使用 Toobar 来作为 Android 客户端的导航栏,以此来取代之前的 Actionbar。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在 Activity 的顶部,而是可以放到界面的任意位置。

注意:在使用 Toolbar 时,整个 App 的 Theme 必须是 NoActionBar, 不然应用会出错。

除此之外,在设计 Toolbar 的时候,Google 也留给了开发者很多可定制修改的余地,这些可定制修改的属性在 API 文档中都有详细介绍,如:

 设置导航栏图标;

  设置 APP 的logo;

 支持设置标题合子标题;

 支持 Action Menu;

在布局文件中的属性:

 app:navigationIcon 设置 navigation button

app:navigationIcon="@mipmap/back_icon"

 app:logo 设置 logo 图标

app:logo="@drawable/ic_tool_logo"

 app:title 设置标题(正标题)

 app:titleTextColor 设置正标题文字颜色

 app:subtitle 设置副标题

 app:subtitleTextColor 设置副标题文字颜色

 app:theme 主题

 app:popupTheme 设置点击右上角''..." 的主题,改变 UI 展示效果

app:popupTheme="@style/ToolBarPopupTheme"

TollBarPopupTheme 内容如下。放在了 values --> Thems --> Themes.xml 里。

<!-- 设置”...“ 点击时的主题(即右上角的那个menu) --><style name="ToolBarPopupTheme" parent="ThemeOverlay.AppCompat.Light"><item name="android:colorBackground">#616161</item><!--设置背景颜色的--><item name="android:textColorPrimary">@android:color/white</item><!--设置文字颜色的--><item name="android:textSize">16sp</item><!--设置文字大小的--><item name="actionOverflowMenuStyle">@style/OverflowMenuTheme</item><!--设置弹出位置的主题--><item name="android:paddingEnd">-5dp</item><!--设置点击”...“弹出的菜单的位置 ,负数是往右移--></style>

 android:backgroundTint  应用于background 的色彩。而background是一个可绘制的背景,可以是一个完全可绘制资源的引用(例如图片、可调整大小位图9-patch、XML状态列表描述、etc),或者是纯色如黑色。backgroundTint只能用颜色,而background有引用、图片和颜色。如果你只是要给背景上纯色的话,建议用backgroundTint,如果你要用背景图片的话,就用background,可以分别提高对应的执行效率!

android:backgroundTint="#afbfff"

 android:backgroundTindMode 当我们既设置了 android:background 又设置了 android:backgroundTint 时,那么就会将 android:backgroundTint 设置的颜色与背景进行一个叠加,叠加的常用模式如下:

1. PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。

2. PorterDuff.Mode.SRC_IN 取两层绘制交集。显示上层

3. PorterDuff.Mode.SRC_ATOP 取下层非交集部分与上层交集部分

4. PorterDuff.Mode.SCREEN 取两图层全部区域,交集部分变为透明色

android:backgroundTintMode="src_over"

Toolbar 加上 menu

如下图,当我们设置完 toolbar 时,并没有右侧的 menu ?

我们可以给 Toolbar 加上右侧的 menu (那三个"..."),在 toolbar 所在的 activity 中重写 onCreateOptionMenu() 方法即可实现。

/*** menu 与 toolbar 绑定*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.toolbar, menu);// TODO 拿到 toolbar 里的 itemMenuItem searchItem = menu.findItem(R.id.action_search);SearchView searchView = (SearchView) searchItem.getActionView();searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {@Overridepublic boolean onMenuItemActionExpand(MenuItem item) {return true;}@Overridepublic boolean onMenuItemActionCollapse(MenuItem item) {return true;}});return super.onCreateOptionsMenu(menu);}

toolbar.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"><itemandroid:id="@+id/action_favorite"android:icon="@drawable/nav_selector"android:title="@string/favorite"app:showAsAction="never" /><!-- Settings, should always be in the overflow --><itemandroid:id="@+id/action_settings"android:icon="@drawable/ic_baseline_settings_64"android:title="@string/settings"app:showAsAction="never" /><item android:id="@+id/action_search"android:title="@string/action_search"android:icon="@drawable/ic_baseline_search_64"app:showAsAction="ifRoom|collapseActionView"app:actionViewClass="androidx.appcompat.widget.SearchView" /></menu>

加上 menu 的效果

给 menu 的 item 设置点击事件,重写 onOptionsItemSelected() 方法。这里简单的进行了一个 Toast 弹窗,你可以进行丰富的其它设置。

/***  menu 里 item 点击事件监听* @param item menu 里的 菜单* @return*/@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.action_settings:Toast.makeText(MainActivity.this, R.string.settings, Toast.LENGTH_SHORT).show();return true;case R.id.action_favorite:Toast.makeText(MainActivity.this, R.string.favorite, Toast.LENGTH_SHORT).show();return true;default:return super.onOptionsItemSelected(item);}}

Toolbar 设置 Theme

细心的朋友可以发现,上面 toolbar 与我们开始演示的 UI 还是有些区别,比如正副标题的颜色,menu 是横着的且是绿色的等。这时我们可以通过给 Toolbar 设置 Theme 来完成。

可以通过 textColorPrimary 来设置正标题字体颜色,textColorSecond 设置副标题字体颜色,同时必须实现 windowActionBar 和 windowNoTitle 。

<!--    使用ToolBar, 在 AndroidManifest 里的activity添加该 theme--><style name="ToolBarAppTheme" parent="MaterialAppTheme"><item name="windowActionBar">false</item><item name="windowNoTitle">true</item><!-- 修改右侧溢出菜单,副标题,navigation 的颜色--><item name="android:textColorSecondary">@color/purple_500</item><!-- 不能在这里修改弹出框的右边距--><!--        <item name="android:paddingEnd">-5dp</item>--><!-- 设置文字颜色的--><item name="android:textColorPrimary">@color/Green700</item><!-- 设置文字大小的--><item name="android:textSize">16sp</item><!-- 注意设置的位置  --><item name="actionOverflowButtonStyle">@style/OverflowTheme</item><item name="toolbarStyle">@style/NoSpaceActionBarTheme</item></style>

actionOverflowButtonStyle 可以用来设置 menu 的样式,让右上角的 ”...“ 横着显示,且设置它的颜色,OverflowTheme 内容如下:

    <style name="OverflowTheme" parent="android:style/Widget.Holo.Light.ActionButton.Overflow"><item name="android:src">@drawable/ic_tool_more_horiz_24</item><item name="android:paddingStart">12dp</item><item name="android:paddingEnd">12dp</item>

最后完成上面的 Theme 设置,那么我们要在哪里用 ToolBarAppTheme 呢?答案是 AndroidMnifest 里,加在 Toolbar 所在 activity 上。这样就可以显示我们想要的效果了。

注意:对于主题 Theme ,一般是 app --> Activity --> 控件,且后面的 theme 可以覆盖前面的。

完整 Demo

链接:https://pan.baidu.com/s/1nlTax1GFXXR2q_khFz2Wew 
提取码:2tb5

Android---Toolbar相关推荐

  1. android toolbar控件,Android Toolbar控件

    1. Toolbar类 Toolbar是替代ActionBar的产物,低版本可以使用v7兼容包,使用Theme.AppCompat主题,并添加配置. false true 2. Toolbar配置 主 ...

  2. Android Toolbar设置向上箭头,标题等

    Android Toolbar设置向上箭头,标题等 标签: android布局 2016-07-25 22:58 1163人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得 ...

  3. 最详细的 Android Toolbar 开发实践总结一

    最详细的 Android Toolbar 开发实践总结 2016-02-25    分类:Android开发.编程开发.首页精华12人评论     来源:D_clock 分享到:更多12 过年前发了一 ...

  4. Android Toolbar 居中

    Android Toolbar封装 1.QToolbar是什么 标题栏控件,基于Toolbar控件封装 有返回按钮 左标题 居中标题 子标题 右侧菜单 优势: 继承于Toolbar,Toolbar的A ...

  5. Android Toolbar配合menu使用详解

    Android Toolbar配合menu使用详解 Toolbar使用 普通menu使用 上下文menu使用: PopupMenu菜单: 历史上的今天(2021.3.5): 1898年3月5日,周恩来 ...

  6. Android - toolbar navigation 样式

    1.修改title 边距 修改边距使用系统的app属性来引入使用,即: xmlns:app="http://schemas.android.com/apk/res-auto" 1 ...

  7. android toolbar 开发总结

    1.如何设置右边菜单距离右边的距离 在xml里面 <android.support.v7.widget.Toolbarxmlns:android="http://schemas.and ...

  8. Android toolbar menu 字体点击样式

    今天在做toolbar的时候,右边的菜单的点击事件,就是文字,然后文字的样式,文字的大小,文字的颜色,高了半天.最后发现,文字点下去之后是有样式的,也就是按下去有阴影. 哥哥的耐心好,就知道这不是问题 ...

  9. Android Toolbar Padding

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在API version 21 (the support library),如何正常使用Toolbar 这是常规式布局出来的Toolbar,我设置 ...

  10. Android ToolBar的使用

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/64130211 本文出自[赵彦军的博客] 前言 ToolBar的出现是为了替换之前的 ...

最新文章

  1. javascript音频管理方案:SoundManager2
  2. kaldi语音识别实战pdf_语音识别相关工具和资料分享
  3. Method Swizzling 为什么要先调用 class_addMethod?
  4. 2019ICPC(南昌) - Hello 2019(动态规划+线段树维护矩阵)
  5. vsftpd的简单安装和配置(只有三步)
  6. mysql建表影响效率_关于MySQL建表对DML的影响【转】
  7. Android ADB 你想要的都在这
  8. 简述使jdbc连接mysql数据库_java中简述使用JDBC完成数据库操作的基本步骤。
  9. protoc安装使用
  10. Contexts for mac(程序快速调用工具)
  11. html使用highcharts绘制饼图,Highcharts绘制饼图的简单实例
  12. 有关GUASS高斯数据库的语法汇总(获取字符串字节数等)
  13. 手机文字转语音简单方法分享
  14. 为什么苹果允许用户安装未受信任的企业级开发者所开发的软件?
  15. 新能源车企凶猛下沉,“新车商”会是一条捷径吗?
  16. htc+m7+android系统+电源,htc one m7 4.4系统获取root权限教程(安卓4.4专用)
  17. BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)
  18. 看懂nfl定理需要什么知识_NFL球队为什么不经常通过?
  19. 京东小程序开放平台,他来了
  20. 表面等离子体共振新进展!

热门文章

  1. Joystick Shield 的使用方法
  2. 显示系统信息(System Info)
  3. Pandas操作02
  4. 重点客户销售数据分析python_项目实战 | 使用python分析销售数据
  5. 数据驱动 - ddt
  6. iphoneX的safari浏览器操作栏隐藏时兼容底部Home键
  7. HTML CSS个人网页设计与实现——人物介绍丁真(学生个人网站作业设计)
  8. 因为未将计算机与远程服务,win7提示错误797未建立到远程访问服务的连接怎么办...
  9. php查询更新数据库数据类型,更新Update
  10. 在CMD上运行javac前应该这样做