工具栏上的后退按钮的自定义图像和颜色

时间:2018-08-17 12:18:26

标签: android toolbar

我想在工具栏上显示“ x”按钮而不是默认的后退箭头作为“主页”按钮。我已经搜索了如何使用自定义图像并且它可以工作,并且我已经搜索了如何使用特定颜色的后退箭头来工作。问题是,当我同时放置自定义图像和自定义颜色时,当我希望将其显示为蓝色时,它将显示其默认颜色为黑色的图像。

这是工具栏的xml:

<android.support.v7.widget.Toolbar
 android:layout_width="match_parent"
 android:layout_height="?attr/actionBarSize"
 android:id="@+id/toolbar"
 android:theme="@style/ThemeToolbar">

这是ThemeToolbar样式:

<style name="ThemeToolbarDetails" parent="Theme.AppCompat.Light">
    <item name="colorControlNormal">@color/blue</item>
    <item name="homeAsUpIndicator">@drawable/close</item>
</style>

我尝试了colorControlNormal,android:textColorSecondary,但是使用自定义图像时这些都不起作用。

1 个答案:

答案 0 :(得分:3)

首先,在您的样式上保持这一行:<item name="homeAsUpIndicator">@drawable/close</item>

然后,您有几种解决颜色部分的方法。

选项1:如果使用的是Vector Drawables,则只需更改XML文件中的颜色即可。

选项2:另外,您还可以以编程方式为任何菜单项着色。通过Menu方法获取onCreateOptionsMenu()对象,然后尝试下面的代码段:

private void tintIcon(@NonNull MenuItem item, int color) {
    Drawable drawable = item.getIcon();

    if (drawable != null) {
        final Drawable wrapped = DrawableCompat.wrap(drawable);
        drawable.mutate();
        DrawableCompat.setTint(wrapped, color);
        item.setIcon(drawable);
    }
}

选项3:以编程方式更改可绘制对象和颜色。

final Drawable myIcon =  ContextCompat.getDrawable(context, R.drawable.your_icon);
myIcon.setColorFilter(ContextCompat.getColor(context, R.color.your_color), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(myIcon);