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样式