我有这个xml代码:
<item
android:id="@+id/search_id"
android:title="Search"
app:showAsAction="always">
<bitmap
android:src="@drawable/ic_search_black_24dp"
android:tint="@color/colorAccent">
</bitmap>
</item>
<item
android:id="@+id/shoppingcart_id"
android:title="Shopping Cart"
android:icon="@drawable/ic_shopping_cart_black_24dp"
app:showAsAction="always"></item>
它们都是黑色图标,但我想要变成红色的第一个图标。但是当我运行我的应用程序时,它并没有显示任何内容。是否可以仅使用XML从可绘制资源更改PNG文件颜色而无需在java中添加代码?
谢谢。答案 0 :(得分:1)
修改强>
Woops,刚刚意识到你在谈论一个菜单图标,所以,试着将你的位图包装在一个可绘制的文件中,如下所述: https://stackoverflow.com/a/39535399/7296930
解决方案取决于您的API版本。
对于API 21 +:
尝试将图标定义为另一个带有色调的drawable,并将此新drawable引用为图标(而不是&lt; bitmap&gt;标记)?
适用于API&lt; 21:
Juste使用自定义TintableImageView和自定义属性来遵循解决方案here。 您将不得不编写一些Java来定义TintableImageView小部件,但是您的drawable将仅在xml中定义,类似于:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.example.widgets.TintableImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/example"
app:tint="@color/color_selector"/>
</LinearLayout>