How to change color of the back arrow in the new material theme?
Как изменить цвет стрелки назад в новой теме material?
Я обновил свой SDK до API 21, и теперь значок back / up представляет собой черную стрелку, указывающую влево.
Я бы хотел, чтобы она была серой. Как я могу это сделать?
В Play Store, например, стрелка белая.
Я сделал это, чтобы установить некоторые стили. Я использовал @drawable/abc_ic_ab_back_mtrl_am_alpha для homeAsUpIndicator. Этот объект рисования прозрачный (только альфа), но стрелка отображается черным цветом. Интересно, могу ли я установить цвет, как я делаю в DrawerArrowStyle. Или единственное решение - создать my @drawable/grey_arrow и использовать его для homeAsUpIndicator.
<!-- Base application theme --> <stylename="AppTheme"parent="Theme.AppCompat.Light"> <itemname="android:actionBarStyle"tools:ignore="NewApi">@style/MyActionBar</item> <itemname="actionBarStyle">@style/MyActionBar</item>
<itemname="android:background">@color/actionbar_background</item> <!-- Support library compatibility --> <itemname="background">@color/actionbar_background</item> </style>
<!-- Style for the navigation drawer icon --> <stylename="DrawerArrowStyle"parent="Widget.AppCompat.DrawerArrowToggle"> <itemname="spinBars">true</item> <itemname="color">@color/actionbar_text</item> </style>
До сих пор моим решением было взять @drawable/abc_ic_ab_back_mtrl_am_alpha, который кажется белым, и покрасить его в нужный мне цвет с помощью редактора фотографий. Это работает, хотя я бы предпочел использовать @color/actionbar_text как в DrawerArrowStyle.
Переведено автоматически
Ответ 1
Вы можете добиться этого с помощью кода. Получите возможность рисовать стрелку назад, измените ее цвет с помощью фильтра и установите в качестве кнопки "Назад".
Looking at the Toolbar and TintManager source, drawable/abc_ic_ab_back_mtrl_am_alpha is tinted with the value of the style attribute colorControlNormal.
I did try setting this in my project (with <item name="colorControlNormal">@color/my_awesome_color</item> in my theme), but it's still black for me.
Update:
Found it. You need to set the actionBarTheme attribute (notactionBarStyle) with colorControlNormal.
Eg:
<style name="MyTheme" parent="Theme.AppCompat.Light"> <item name="actionBarTheme">@style/MyApp.ActionBarTheme</item> <item name="actionBarStyle">@style/MyApp.ActionBar</item> <!-- color for widget theming, eg EditText. Doesn't effect ActionBar. --> <item name="colorControlNormal">@color/my_awesome_color</item> <!-- The animated arrow style --> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> </style>
<style name="MyApp.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar"> <!-- THIS is where you can color the arrow! --> <item name="colorControlNormal">@color/my_awesome_color</item> </style>
<style name="MyApp.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="elevation">0dp</item> <!-- style for actionBar title --> <item name="titleTextStyle">@style/ActionBarTitleText</item> <!-- style for actionBar subtitle --> <item name="subtitleTextStyle">@style/ActionBarSubtitleText</item>
<!-- the actionBarTheme doesn't use the colorControlNormal attribute <item name="colorControlNormal">@color/my_awesome_color</item> --> </style>
Ответ 3
Tried all suggestions above. The only way that I managed to change the color of navigation icon default Back button arrow in my toolbar is to set colorControlNormal in base theme like this. Probably due to the fact that the parent is using Theme.AppCompat.Light.NoActionBar
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/white</item> //the rest of your codes... </style>
Ответ 4
Need to add a single attribute to your toolbar theme -