目录

1、改变Toolbar高度(解决图标不垂直居中)

2、改变toolbar弹窗菜单样式

3、改变toolbar整体样式

4、改变searchview样式


1、改变Toolbar高度(解决图标不垂直居中)

背景:实际使用中,toolbar默认高度有些大,会挤压内容。想将toolbar高度改小,将layout_height从wrap_content改为固定值。

情况:toolbar的layout_height比默认高度小的时候,发现标题是居中的,但是两侧的图标不垂直居中而偏下了

调查:网上有很多方法,基本都是无效的。甚至有人利用反射直接修改图标的imageview的gravity,非常复杂且右侧图标无法实现。

解决方法:

自定义一个样式如下:

<style name="AppBar" parent="Base.Widget.AppCompat.Toolbar"><item name="android:minHeight">45dp</item><item name="android:background">@color/appbar_bg</item>
</style>

其中minHeight修改为toolbar想要的高度,然后为toolbar设置这个样式,同时layout_height也改为该值。这样图标就可以正常居中显示了。如下:

<android.support.v7.widget.Toolbarxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/appbar"android:layout_height="45dp"android:layout_width="match_parent"style="@style/AppBar">
</android.support.v7.widget.Toolbar>

2、改变toolbar弹窗菜单样式

xml中为toolbar添加下面代码
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"

两种主要样式Dark是黑底白字,Light是白底黑字

注意要添加

xmlns:app="http://schemas.android.com/apk/res-auto"

这样只要替换popupTheme的值就可以改变弹窗菜单样式。

而且也可以自定义样式。

3、改变toolbar整体样式

自定义一个样式如下:
<style name="AppBarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar"><item name="android:textColorPrimary">@color/white</item><item name="colorAccent">@color/white</item>
</style>

两种主要样式Dark是灰色字体白色图标,Light是黑色字体黑色图标

其中textColorPrimary改变字体颜色,包括toolbar标题颜色等;colorAccent改变searchview的光标颜色。

然后在xml中为toolbar添加这个样式

app:theme="@style/AppBarTheme"

注意要添加

xmlns:app="http://schemas.android.com/apk/res-auto"

这样只要替换popupTheme的值就可以改变弹窗菜单样式。

而且也可以自定义样式。

4、改变searchview样式

自定义一个searchview样式如下:
<style name="SearchView" parent="Widget.AppCompat.SearchView"><item name="submitBackground">@color/a</item><item name="queryBackground">@color/b</item>
</style>

在这个样式中可以修改searchview的各个属性,所有属性如下:

<item name="layout">@layout/abc_search_view</item>
<item name="queryBackground">@drawable/abc_textfield_search_material</item>
<item name="submitBackground">@drawable/abc_textfield_search_material</item>
<item name="closeIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
<item name="searchIcon">@drawable/abc_ic_search_api_mtrl_alpha</item>
<item name="searchHintIcon">@drawable/abc_ic_search_api_mtrl_alpha</item>
<item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item>
<item name="voiceIcon">@drawable/abc_ic_voice_search_api_mtrl_alpha</item>
<item name="commitIcon">@drawable/abc_ic_commit_search_api_mtrl_alpha</item>
<item name="suggestionRowLayout">@layout/abc_search_dropdown_item_icons_2line</item>

在问题3的基础上修改如下

<style name="AppBarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar"><item name="android:textColorPrimary">@color/white</item><item name="colorAccent">@color/white</item><item name="searchViewStyle">@style/SearchView</item>
</style>

这样就可以自定义searchview样式

自定义Toolbar的一些小技巧相关推荐

  1. mybatis 自定义转换规则_Mybatis使用小技巧-自定义类型转换器

    一般情况下,mybatis自带的类型转换器已经足够用了,但是需求永无止境,自定义类型转换器还是学一下吧,指不定哪天会用上. 举个没啥用的示例 javabean如下: public class User ...

  2. Excel自定义格式的小技巧

    在EXCEL自定义单元格格式是有一个小技巧可以分别为正数.负数.0和文本设置不同的显示格式,格式之间用 ; 号隔开.比如 "正数";"负数";"0&q ...

  3. go 自定义error怎么判断是否相等_Go Web 小技巧(二)GORM 使用自定义类型

    不知道大家在使用 Gorm 的时候,是否有遇到过复杂类型 ( map, struct...) 如何映射到数据库的字段上的问题? 本文分别介绍通过实现通用接口和 Hook 的方式绑定复杂的数据类型. 一 ...

  4. 【实战 Ids4】小技巧篇:自定义登录页操作

    今天的内容很简单,1分钟就能看完,5分钟就能学会,但是却是在我们平时开发中必须要学会的一个小知识点,我就不让大家走弯路了,直接看操作. 在平时的IdentityServer4开发中呢,我们都是根据官方 ...

  5. VB 小技巧自定义TextBox文本框右键菜单

    'TextBox单击鼠标右键总是跟出来一个系统默认的关于文本操作的菜单,如何把它去掉?请看如下代码. Private Sub Text1_MouseDown(Button As Integer, Sh ...

  6. Powershell 自定义对象小技巧

    豆子之前在脚本里面自定义对象的时候一般是这么考虑的,我需要创建一个数组,每次循环的时候把一个自定义的对象放进去,对于这个自定义的对象的结构,我需要创建一个哈希表,然后转换成自定义对象.这个思路是没错, ...

  7. 【小技巧】IDEA更换个性自定义背景

    IDEA是一款不错的开发工具,相信大家非常喜欢使用,而且IDEA中有特别多的小技巧,大家也没开发出来,近期玩IDEA,现在分享一下IDEA的指定自定义背景,首先上一张图(版本 :IntelliJ ID ...

  8. Visual Studio 小技巧:自定义代码片断

    用鼠标点点Visual Studio,会发现有个代码片断菜单:  点开后发现,原来是常用的代码片断(Tab的快捷方式)的管理器: 于是打开上面的文件夹路径: 通过经验或者直觉可知:要自定义代码片断,只 ...

  9. SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用

    通常在我们的项目中,都会涉及到母版页的定制.并且必不可少的,需要配合以一套自己的JavaScript框架和CSS样式. 你有没有遇到过这样的情况呢,在开发环境和UAT时都还算顺利,但是当最终部署到生产 ...

最新文章

  1. 使用Python,OpenCV构建透明的叠加层
  2. python打开文件并读取内容-Python实现的读取文件内容并写入其他文件操作示例
  3. github创建项目,并提交本地文件
  4. 从个人到团队:思维转变是关键
  5. 3000块你请不到一个农民工,只能请到一个大学生
  6. Spring是如何校验XML的
  7. docker centos node nginx
  8. Linux加密框架 crypto 算法模板
  9. shell脚本中用到的条件和循环语句
  10. 又一个查询,哥整了一天,NND有点受不鸟了
  11. php获取客户端信息(浏览器/IP/操作系统)代码
  12. Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期
  13. 7. CPU Scheduling
  14. 手把手带你玩转Spark机器学习-深度学习在Spark上的应用
  15. SuperMap系列——GIS数据之地图瓦片
  16. PLC通讯之串口转以太网/WIFI的透传模块(DTU)的专用OPC软件和DLL通讯组件
  17. Mac安装steam提示Steam needs to be online to update. Please confirm your network connection and try again
  18. 谷歌不准备推出 ChatGPT 类聊天产品;Bugzilla 宣布未来计划|极客头条
  19. UrlEncode编码/UrlDecode解码 - 站长工具
  20. Git--建立和解除与远程仓库的关联

热门文章

  1. uva 1476 - Error Curves
  2. C语言逗号运算符和逗号表达式
  3. 开发时对业务技术框架的理解
  4. restful规范和APIView
  5. CentOS 7安装GitLab、汉化、配置邮件发送
  6. 菜鸟涂鸦作品展_No.27
  7. 实时计算 Flink性能调优
  8. 前华为技术大牛告诉你:如何正确入门深度学习
  9. ASP.NET Core MVC 中的 [Controller] 和 [NonController]
  10. xhost: unable to open display linux下安装oracle