java - 如何更改新 Material 主题中后退箭头的颜色?

标签 java android user-interface colors android-styles

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

Black back arrow

我希望它是灰色的。我该怎么做?

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

我这样做是为了设置一些样式。我已将 @drawable/abc_ic_ab_back_mtrl_am_alpha 用于 homeAsUpIndicator。该drawable是透明的(只有alpha),但箭头显示为黑色。我想知道我是否可以像在 DrawerArrowStyle 中那样设置颜色。或者,如果唯一的解决方案是创建我的 @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,并使用照片编辑器将其绘制成我想要的颜色。它可以工作,虽然我更喜欢像在 DrawerArrowStyle 中那样使用 @color/actionbar_text

最佳答案

你可以通过代码来实现。获取返回箭头drawable,通过滤镜修改颜色,设置为返回按钮。

final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
upArrow.setColorFilter(getResources().getColor(R.color.grey), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);

修订版 1:

从 API 23 (Marshmallow) 开始,可绘制资源 abc_ic_ab_back_mtrl_am_alpha 更改为 abc_ic_ab_back_material

编辑:

您可以使用此代码来实现您想要的结果:

toolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.blue_gray_15), PorterDuff.Mode.SRC_ATOP);

关于java - 如何更改新 Material 主题中后退箭头的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788464/

相关文章:

ios - 什么是 iOS7 相当于 HTML 单选按钮?

android - 如何从菜单中删除多余的空格

user-interface - 什么是最好的自动化网站 UI 测试框架

java - Weblogic 12c上的EAR部署时发生NullPointerException

java - 在 Java Web 应用程序中打印

android - 添加facebook依赖gradle错误

java - 如何从 RecyclerView 获取值以详细了解 Activity

java - SerializationException 在 Android Studio 中为 LibGDX uiskin 读取 JSON 文件时出错

Java 问题 : Is it a method?

java - Android:唯一 ID 生成器和语言环境