今天实现一个功能,按照正常的调用setColorFilter如下:
Drawable drawable = imgs.get(i);
drawable.setColorFilter(R.color.aaa,PorterDuff.Mode.SRC_ATOP);
iv.setImageDrawable(drawable);
这样写表示先改drawable,然后给drawable着色,然后被图片控件引用。但是在某些特殊情况下,会不起效(我遇到的具体场景是,当drawable变更时,再对drawable着色后被图片引用,图片实际没有被着色)。
然后改成下面这样就可以了:
Drawable drawable = imgs.get(i);
iv.setImageDrawable(drawable);
iv.setColorFilter(R.color.aaa,PorterDuff.Mode.SRC_ATOP);
具体就是不改drawable,对iv控件进行着色调用,这样页面就能把着色刷新出来。