我使用以下方法动态设置矢量drawable的背景颜色:
Drawable mDrawable = ContextCompat.getDrawable(context, item.getCategoryIconId());
mDrawable.setColorFilter(new
PorterDuffColorFilter(ContextCompat.getColor(context, item.getCategoryColorId()), PorterDuff.Mode.MULTIPLY));
holder.expenseCatIcon.setImageDrawable(mDrawable);
但是当在onBindViewHolder中再次将颜色设置为相同的Vector drawable时,它会针对我使用该drawable的每个recyclelerview行进行更新。
上面我添加了我正在谈论的视图,我有一个不同的活动,我可以创建像"食物"," gult"," loot&#等项目34;和" ffd"等等 我确保资源颜色ID不同,来自Log:
名称:食物颜色:2131623945 名称:gult颜色:2131624100 名称:战利品颜色:2131624174 名称:ffd颜色:2131624084
我的理解是当我将滤色器设置为矢量drawable时,颜色最后会被应用到该矢量drawable,并且会为所有相同的可绘制资源产生相同的颜色。 < / p>
我能做些什么让这项工作成功吗?
答案 0 :(得分:0)
随着视图被回收,因此您应用的更改会显示onBindHolder中的所有drawable。如果你想要一个不同的输出,也许可以添加一些条件语句。