AppCompatImageButton
という簡単なナビゲーションボタンは、toolbarNavigationButtonStyle
属性でスタイル指定することができます。 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
)。この場合、android:tint
の単純なカラー値をres/values/
に指定して、res/values/
とres/values-21/
に別のスタイルを作成する必要があります。
例えば、着色は、テーマの主なテキストの色と一致する場合:
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未満のサポートライブラリバージョンを使用してスタックされています。