为什么setAlpha()在RecyclerViews中不起作用?

Ber*_*yle 3 transparency android android-view android-viewholder android-recyclerview

我试图根据某些用户输入更改RecyclerView中项目视图的透明度。

if (quantity>0) {
    holder.itemView.setAlpha((float) 1);
} else {
    holder.itemView.setAlpha((float) 0.65);
}
Run Code Online (Sandbox Code Playgroud)

当数量> 0时,将alpha从0.65更改为1效果很好。但是在另一种情况下,反向操作无效。调试时,它清楚地显示了经过这条线。holder.itemView.setAlpha((float) 0.65);但是,alpha不会减少。关于发生了什么的任何线索?

小智 6

回收商的ItemAnimator在更新项目过程中更改Alpha,您可以尝试添加

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
Run Code Online (Sandbox Code Playgroud)


Tgo*_*014 5

我有同样的问题。不要更改 的 alpha,而是itemView为您的根布局命名并更改其 alpha,因为 recyclerview 动画处理itemViewalpha 动画使其不起作用。


Jac*_*kWu 5

删除项目动画师

在爪哇中:

mRecyclerView.setItemAnimator(null);
Run Code Online (Sandbox Code Playgroud)

或者在科特林中:

recycler_view.itemAnimator = null
Run Code Online (Sandbox Code Playgroud)