自定义Toolbar的一些小技巧

目录

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.Toolbar
    xmlns: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样式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BennuCTech

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值