如何色調菜單圖標已經覆蓋了幾次,喜歡這裏: Toolbar icon tinting on Android色調導航圖標在工具欄
此外該解決方案仍有導航圖標的問題。 (請參閱:https://stackoverflow.com/a/26817918/2417724)
如果您設置了一個自定義圖標(這種情況很容易出現,因爲您需要更改它if你不想顯示默認後退箭頭),那麼這個自定義圖標不會被着色。
那麼你如何處理你的圖標呢? 我所有的圖標都是默認的黑色,我不想在工具欄中使用特殊的白色版本。
如何色調菜單圖標已經覆蓋了幾次,喜歡這裏: Toolbar icon tinting on Android色調導航圖標在工具欄
此外該解決方案仍有導航圖標的問題。 (請參閱:https://stackoverflow.com/a/26817918/2417724)
如果您設置了一個自定義圖標(這種情況很容易出現,因爲您需要更改它if你不想顯示默認後退箭頭),那麼這個自定義圖標不會被着色。
那麼你如何處理你的圖標呢? 我所有的圖標都是默認的黑色,我不想在工具欄中使用特殊的白色版本。
可以通過toolbarNavigationButtonStyle
屬性對appcompat導航按鈕進行樣式設置,該按鈕只是AppCompatImageButton
。 AppCompat
主題中的默認樣式爲Widget.AppCompat.Toolbar.Button.Navigation
,我們可以擴展該樣式以添加tint
屬性值。例如:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation.Tinted</item>
</style>
<style name="Toolbar.Button.Navigation.Tinted" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="tint">@color/nav_button_tint</item>
</style>
有幾個需要注意的地方要注意使用這種方法的時候。
此前支持庫版本25.4.0,AppCompatImageButton
沒有提供自己的tint
的屬性,因此在應用程序的命名空間的tint
屬性將不適用(,只是將不存在,除非另有定義)。如果使用支持庫版本25.3.0或更低版本,則必須使用平臺android:tint
屬性。
不幸的是,這會導致另一個趕上,在該平臺色調棒棒糖之前(API 21級)只能處理簡單的,單一的顏色值,並使用ColorStateList
(<selector>
)資源價值將導致Exception
被拋出。如果android:tint
值爲簡單顏色,則這不會造成問題,但通常需要將導航圖標着色爲與另一個主題顏色屬性相匹配,這很可能是ColorStateList
。在這種情況下,需要在res/values/
和res/values-21/
中創建單獨的樣式,並在res/values/
中指定android:tint
的簡單顏色值。
例如,如果着色,以配合主題的主要文本顏色:
res/values/styles.xml
<item name="android:tint">@color/normal_text_color</item>
res/values-v21/styles.xml
<item name="android:tint">?android:textColorPrimary</item>
你只需要關心自己用,如果你是上面的注意事項使用小於25.4.0的支持庫版本卡住。