我使用这些代码来使RunningAppProcessInfo的图标变灰,但会产生一些副作用,其他列表中的所有图标也会变灰! SUP?任何解决方案?
ImageView icon = (ImageView) view.findViewById(R.id.icon);
if (_isChecked) {
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
icon.setColorFilter(new ColorMatrixColorFilter(cm));
}
答案 0 :(得分:1)
如果你在这里谈论ListView,那么就这样做:
ImageView icon = (ImageView) view.findViewById(R.id.icon);
if (_isChecked) {
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
icon.setColorFilter(new ColorMatrixColorFilter(cm));
}
else {
// Reset saturation to normal here
}
原因是视图在ListView中重用以提高性能。
答案 1 :(得分:0)
是的,我在list1中做了你说的话,但在list2中仍有副作用: 事实:似乎所有RunningAppProcessInfo只共享相同的图标。
if (_isChecked) {
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(1);
icon.setColorFilter(new ColorMatrixColorFilter(cm));
} else {
appName.setTextColor(Color.GRAY);
whitelist_item_type_tv.setTextColor(Color.GRAY);
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
icon.setColorFilter(new ColorMatrixColorFilter(cm));
}