我试图根据某些用户输入更改RecyclerView中项目视图的透明度。
if (quantity>0) {
holder.itemView.setAlpha((float) 1);
} else {
holder.itemView.setAlpha((float) 0.65);
}
将alpha值从0.65更改为1很好。但是不是相反。调试时,它清楚地显示了经过holder.itemView.setAlpha((float) 0.65);
行的情况。但是,alpha不会减少。关于发生了什么的任何线索?
答案 0 :(得分:4)
回收者的ItemAnimator在更新项目过程中更改Alpha 您可以尝试添加
((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
答案 1 :(得分:2)
我有同样的问题。不用更改itemView
的Alpha,而是给您的根布局命名并更改其Alpha,因为recyclerview动画处理itemView
Alpha动画使其不起作用。
答案 2 :(得分:0)
删除项目动画师
mRecyclerView.setItemAnimator(null);
答案 3 :(得分:0)
认为这是 HolderView 类
class MyViewHolder(val viewHolder: View) : RecyclerView.ViewHolder(view)
并考虑这就是您的 Adapter 类从内部的样子
// ...
override fun onBindViewHolder(holder: MyViewHolder, i: Int) {
holder.viewHolder.alpha = 0.65f
}
有时如果您的代码是 holder.viewHolder.alpha = 0.65f
,它并不总是有效!
除此之外,您还可以像那样使用主容器的 alpha
<RelativeLayout
android:id="@+id/viewMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
... Your other components goes here
</RelativeLayout>
现在,从你的适配器改用它,它应该适用于所有情况
// ...
override fun onBindViewHolder(holder: MyViewHolder, i: Int) {
holder.viewMain.alpha = 0.65f
}