0

我使用这些代码将 RunningAppProcessInfo 的图标变灰,但会导致其他列表中的所有图标也变灰的副作用!支持?有什么解决办法吗?

        ImageView icon = (ImageView) view.findViewById(R.id.icon);
        if (_isChecked) {
            ColorMatrix cm = new ColorMatrix();
            cm.setSaturation(0);
            icon.setColorFilter(new ColorMatrixColorFilter(cm));
        }
4

2 回答 2

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 中被重用以提高性能。

于 2012-07-06T12:50:41.820 回答
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));

        }
于 2012-07-07T06:36:19.130 回答