如何使用适配器中使用的同一行为回收器视图创建占位符微光布局?



我为学习的微光效果实现了一些示例。我不明白为什么人们在使用微光效果时使用单独的占位符布局?

我们不能以编程方式更改颜色并为我们在适配器类中使用的行执行此操作吗?

请参阅我的适配器类行的代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="3dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">

<LinearLayout
android:id="@+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_toStartOf="@+id/delete"
android:orientation="vertical">

<TextView
android:id="@+id/eventTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:textColor="@color/colorBlack"
android:textSize="18sp"
android:visibility="gone" />
<TextView
android:id="@+id/eventDes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:visibility="gone" />
<TextView
android:id="@+id/eventAttendee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:visibility="gone" />
<TextView
android:id="@+id/eventStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:visibility="gone" />
<TextView
android:id="@+id/eventEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:visibility="gone" />
<TextView
android:id="@+id/eventLocation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:id="@+id/delete"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:clickable="true"
android:focusable="true"
android:tint="@color/colorBlack"
app:srcCompat="@drawable/ic_baseline_delete_24" />

</RelativeLayout>
</androidx.cardview.widget.CardView>

我可以只用这个布局来做到这一点吗?还是应该单独创建?如果分开,你能告诉我如何为上面的这一行做到这一点吗?每个人都只使用"视图"布局。我不明白这一点。

声明新布局的原因是因为您必须将视图包装在 Shimmerlayout 中,并且其父布局将是框架布局或线性布局。所以基本上你在使用哪个容器方面受到限制。此外,您只会显示几秒钟的微光动画,因此不建议将其用作主 ViewGroup。

因此,要创建此行,只需将其包装在里面即可

<?xml version="1.0" encoding="utf-8"?>
<com.facebook.shimmer.ShimmerFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/shimmer_view_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="3dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">

<LinearLayout
android:id="@+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_toStartOf="@+id/delete"
android:orientation="vertical">

<TextView
android:id="@+id/eventTitle"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:textSize="18sp"
android:text="your title"
android:background="#cecece"
android:textColor="#cecece"
/>
<TextView
android:id="@+id/eventDes"
android:layout_width="match_parent"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:text="your sample description goes here"
android:background="#cecece"
android:textColor="#cecece"
/>
<TextView
android:id="@+id/eventAttendee"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:text="your eventAttendee"
android:background="#cecece"
android:textColor="#cecece"
/>
<TextView
android:id="@+id/eventStart"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:text="your start time"
android:background="#cecece"
android:textColor="#cecece"
/>
<TextView
android:id="@+id/eventEnd"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:text="your end time"
android:background="#cecece"
android:textColor="#cecece"
/>
<TextView
android:id="@+id/eventLocation"
android:layout_width="wrap_content"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:text="your location"
android:background="#cecece"
android:textColor="#cecece"
/>
</LinearLayout>
<ImageView
android:id="@+id/delete"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:clickable="true"
android:focusable="true"
android:tint="#cecece"
app:srcCompat="@drawable/ic_delete" />

</RelativeLayout>
</androidx.cardview.widget.CardView>
</com.facebook.shimmer.ShimmerFrameLayout>

现在,当您必须启动它时,只需使用- `

ShimmerFrameLayout container =
(ShimmerFrameLayout) findViewById(R.id.shimmer_view_container);
container.startShimmer();

最新更新