RecyclerView 中 onBindView 上的 setAlpha() 在首次显示时不起作用
setAlpha() on onBindView in RecyclerView doesn't work on first display
在 RecyclerView.Adapter 中使用以下代码:
onBindViewHolder(VH holder, int position){
holder.itemView.setAlpha(0.5f);
}
Alpha 不会在项目第一次显示时显示。但是,如果您离开屏幕再回来,Alpha 就会准确显示。该值正在设置,但在再次显示之前不会显示。关于如何让 setAlpha() 在第一次查看时生效的任何想法。
一定要在创建Holder的时候设置setAlpha(),
class ViewHolder extends RecyclerView.ViewHolder{
...
...
public ViewHolder(View v){
super(v);
...
...
itemView.setAlpha(0.5f);
}
}
不仅在里面onBindViewHolder()
onBindViewHolder(VH holder, int position){
holder.itemView.setAlpha(0.5f);
}
经过进一步调查,只有在使用动画师(例如 android.support.v7.widget.DefaultItemAnimator )时才会发生这种情况,这将清除为视图设置的任何 alpha。您可以使用
RecyclerView.setItemAnimator(null);
并且 alpha 将保持不变
RecyclerView
默认动画师修改 ViewHolder
上 itemView
上的 alpha 集。
将您的 itemView
布局包裹在 FrameLayout
中并修改 FrameLayoyt
的子级的 alpha,例如:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/system_modifies_my_alpha">
<FrameLayout
android:id="@+id/view_holder_bind_modifies_my_alpha">
<!-- your children go here-->
</FrameLayout>
</FrameLayout>
在 RecyclerView.Adapter 中使用以下代码:
onBindViewHolder(VH holder, int position){
holder.itemView.setAlpha(0.5f);
}
Alpha 不会在项目第一次显示时显示。但是,如果您离开屏幕再回来,Alpha 就会准确显示。该值正在设置,但在再次显示之前不会显示。关于如何让 setAlpha() 在第一次查看时生效的任何想法。
一定要在创建Holder的时候设置setAlpha(),
class ViewHolder extends RecyclerView.ViewHolder{
...
...
public ViewHolder(View v){
super(v);
...
...
itemView.setAlpha(0.5f);
}
}
不仅在里面onBindViewHolder()
onBindViewHolder(VH holder, int position){
holder.itemView.setAlpha(0.5f);
}
经过进一步调查,只有在使用动画师(例如 android.support.v7.widget.DefaultItemAnimator )时才会发生这种情况,这将清除为视图设置的任何 alpha。您可以使用
RecyclerView.setItemAnimator(null);
并且 alpha 将保持不变
RecyclerView
默认动画师修改 ViewHolder
上 itemView
上的 alpha 集。
将您的 itemView
布局包裹在 FrameLayout
中并修改 FrameLayoyt
的子级的 alpha,例如:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/system_modifies_my_alpha">
<FrameLayout
android:id="@+id/view_holder_bind_modifies_my_alpha">
<!-- your children go here-->
</FrameLayout>
</FrameLayout>