如何更改新材质主题中后退箭头的颜色?

我已将SDK更新为API 21,现在“后退/向上”图标是一个指向左侧的黑色箭头。


黑色后退箭头


我希望它是灰色的。我怎样才能做到这一点?


例如,在Play商店中,箭头为白色。


我这样做是为了设置一些样式。我已经习惯@drawable/abc_ic_ab_back_mtrl_am_alpha了homeAsUpIndicator。该可绘制对象是透明的(仅Alpha),但是箭头显示为黑色。我不知道是否可以像在笔记本上一样设置颜色DrawerArrowStyle。或者,如果唯一的解决方案是创建my @drawable/grey_arrow并将其用于homeAsUpIndicator。


<!-- Base application theme -->

<style name="AppTheme" parent="Theme.AppCompat.Light">


    <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>

    <item name="actionBarStyle">@style/MyActionBar</item>


    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>


    <item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

    <item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

</style>


<!-- ActionBar style -->

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">


    <item name="android:background">@color/actionbar_background</item>

    <!-- Support library compatibility -->

    <item name="background">@color/actionbar_background</item>

</style>


<!-- Style for the navigation drawer icon -->

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">

    <item name="spinBars">true</item>

    <item name="color">@color/actionbar_text</item>

</style>

到目前为止,我的解决方案是采用@drawable/abc_ic_ab_back_mtrl_am_alpha似乎是白色的,并使用照片编辑器将其绘制为所需的颜色。它可以工作,尽管我更喜欢在中使用@color/actionbar_textlike DrawerArrowStyle。


牧羊人nacy
浏览 540回答 3
3回答

拉莫斯之舞

查看Toolbar和TintManager来源,drawable/abc_ic_ab_back_mtrl_am_alpha以style属性的值进行着色colorControlNormal。我确实尝试在我的项目中设置此<item name="colorControlNormal">@color/my_awesome_color</item>主题(带有主题),但对我来说仍然是黑色的。更新:找到了。您需要使用设置actionBarTheme属性(不是 actionBarStyle)colorControlNormal。例如:<style name="MyTheme" parent="Theme.AppCompat.Light">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <item name="actionBarTheme">@style/MyApp.ActionBarTheme</item>&nbsp; &nbsp; <item name="actionBarStyle">@style/MyApp.ActionBar</item>&nbsp; &nbsp; <!-- color for widget theming, eg EditText. Doesn't effect ActionBar. -->&nbsp; &nbsp; <item name="colorControlNormal">@color/my_awesome_color</item>&nbsp; &nbsp; <!-- The animated arrow style -->&nbsp; &nbsp; <item name="drawerArrowStyle">@style/DrawerArrowStyle</item></style><style name="MyApp.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <!-- THIS is where you can color the arrow! -->&nbsp; &nbsp; <item name="colorControlNormal">@color/my_awesome_color</item></style><style name="MyApp.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar">&nbsp; &nbsp; <item name="elevation">0dp</item>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <!-- style for actionBar title -->&nbsp;&nbsp;&nbsp; &nbsp; <item name="titleTextStyle">@style/ActionBarTitleText</item>&nbsp; &nbsp; <!-- style for actionBar subtitle -->&nbsp;&nbsp;&nbsp; &nbsp; <item name="subtitleTextStyle">@style/ActionBarSubtitleText</item>&nbsp; &nbsp; <!--&nbsp;&nbsp; &nbsp; the actionBarTheme doesn't use the colorControlNormal attribute&nbsp; &nbsp; <item name="colorControlNormal">@color/my_awesome_color</item>&nbsp; &nbsp; &nbsp;--></style>

梦里花落0921

尝试了以上所有建议。我设法在工具栏中更改导航图标默认后退按钮箭头颜色的唯一方法是在基本主题中设置colorControlNormal,如下所示。可能是因为父级正在使用Theme.AppCompat.Light.NoActionBar<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">&nbsp; <item name="colorControlNormal">@color/white</item>&nbsp;&nbsp; //the rest of your codes...</style>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Android