如何均匀地将包含许多不同项目的 View 变灰显示-ImageViews,TextViews,背景图像。我是否必须分别将每件事涂成灰色?还是有办法对所有对象应用相同的滤色器?

最佳答案

除非其他人有更好的答案,否则我目前的方法是将每个项目分别显示为灰色。

PorterDuffColorFilter greyFilter = new PorterDuffColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
myLayout.getBackground().setColorFilter(greyFilter);
myImageView.setColorFilter(greyFilter);
myTextView.setTextColor(0xff777777);

对于更多或嵌套的 child ,使用instanceof进行循环可能是合适的,但我不需要。

编辑:这个过滤器实际上不是灰色的,更好的过滤器在这里:Drawable => grayscale
可以以相同的方式使用。

07-24 09:47