去除ColorFilter / 撤销setColorFilter

74

如何移除ColorFilter或撤销对视图的setColorFilter设置?


1
请不要通过冗余信息来填充问题以规避我们的质量标准检测。 - Kev
3个回答

158

您可以为调用了 setColorFilter() 方法的同一对象调用 clearColorFilter() 方法。该方法相当于 setColorFilter(null),并且比后者更易读。


82

你试过将它设置为 null 吗?

根据安卓文档

public void setColorFilter (ColorFilter cf)

自 API 级别1 开始,将任意的颜色滤镜应用于图像。 参数

cf 应用的颜色滤镜(可以为null)


6
哎呀。view.setColorFilter(0xFFFFFFFF, Mode.MULTIPLY); 也有效。 - Team Pannous
36
在棒棒糖系统上无法正常工作。您应该使用 clearColorFilter() 替代。 - Tim Rae
clearColorFilter()在现有的所有Android版本中都会完全调用setColorFilter(null),所以您在陈述的第二部分是不正确的 :) - Vadim
1
在Android 5上,clearColorFilter()对我不起作用 :( - Kostadin
有些人说它在棒棒糖(API 21或22)上不起作用,这是怎么回事?在我的测试中,无论是null方法还是clearColorFilter()方法都可以在这两个API上正常工作。你是否在另一个API上测试了完全相同的代码(你自己编写的),并且它确实可以工作? - Nerdy Bunz

3

尝试这个:

Drawable play = ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_action_play_arrow);
play.clearColorFilter();
view.invalidate(); // This is helpful when you apply morethan one color filter

还有另外两个答案也很有帮助。但是,当我使视图无效时它对我很有效。


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