【问题标题】:Custom image and color for the back button on toolbar工具栏上后退按钮的自定义图像和颜色
【发布时间】:2019-01-24 11:48:14
【问题描述】:

我想在工具栏上显示“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,但在使用自定义图像时这些都不起作用。

【问题讨论】:

    标签: android toolbar


    【解决方案1】:

    首先,保持你的风格:&lt;item name="homeAsUpIndicator"&gt;@drawable/close&lt;/item&gt;

    那么,你有几种解决颜色部分的方法。

    选项 1:如果您正在使用 Vector Drawable,只需更改 XML 文件中的颜色会更容易。

    选项 2: 或者,您也可以以编程方式为任何菜单项着色。在onCreateOptionsMenu()方法中获取Menu对象,然后试试下面的sn -p:

    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);
    

    【讨论】:

    • 谢谢!这些方法都行,我只是觉得有一个属性可以替换这段代码。
    • 不客气!并且 AFAIK 出于某种原因,该属性仅适用于原始图标,我从未真正找到一种通过样式使其工作的方法。 (可能有办法,我只是不知道)
    • 还有一个问题,对于action bar的其他按钮,是否有属性可以改变它们的颜色?
    • 试试这个:stackoverflow.com/a/28631979/4070469(它会改变所有的图标)
    • 那么,回到我的解决方案。以编程方式为它们着色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多