setColorFilter不能与资源颜色一起使用,无法生效。

6
如果我像这样使用 setColorFilter,它会生效并用所选颜色绘制我的图像:
int color = Color.parseColor("#FF0000"); 
viewHolder.Icon.setColorFilter(color);

但是,如果我尝试使用资源颜色,它什么也不做:

viewHolder.Icon.setColorFilter(R.color.colorPrimary);

资源定义如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#FF5722</color>
</resources>
3个回答

13

被标记为“正确”的答案使用了已弃用的getColor()方法。 因此,这里是最新的答案:

int color = ResourcesCompat.getColor(getResources(), R.color.my_color, null);

5
尝试一下。
int actionBarBackground = getResources().getColor(R.color.actionBarBackground);

而且你可以在setColorFilter方法中设置actionBarBackground,这就是全部。

1
请添加 PorterDuff.Mode.MULTIPLY。请参考以下示例。
viewHolder.Icon.getDrawable().setColorFilter(getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接