CardView与Google Play使用的一样

时间:2017-10-23 06:41:39

标签: android android-layout android-cardview

enter image description here

我想问一下,是否有一种相对简单的方法可以让我的CardViews在RecyclerView中的行为与Google Play使用的相似(上图)。这个CardView具有以下特点:

  • 最上面和最下面的牌的角半径应用于各自的位置。 (底部卡片的阴影就像普通的CardView一样,有足够的高度。

  • 其他项目'角落根本不是圆角,而且两个项目之间只有一条缝线。

1 个答案:

答案 0 :(得分:3)

您可以通过使用卡片视图包装回收器视图而不是包裹每个单元格来轻松完成此操作。

 <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="6dp">

    <android.support.v7.widget.RecyclerView
           android:layout_width="match_parent"
           android:layout_height="wrap_content"/>
</android.support.v7.widget.CardView>

你还需要一个绘制分隔符的装饰器。

public class LineItemDecoration extends android.support.v7.widget.DividerItemDecoration {

   public LineItemDecoration(Context context, int orientation, @ColorInt int color) {
       super(context, orientation);

       setDrawable(new ColorDrawable(color));
   }

   public LineItemDecoration(Context context, int orientation, @NonNull Drawable drawable) {
       super(context, orientation);

       setDrawable(drawable);
   }
}

这是可绘制的线

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:left="60dp">
        <shape>
            <solid android:color="@color/colorDivider" />
            <size android:height="1dp" />
        </shape>
    </item>
</layer-list>

你可以使用like;

mRecycler.addItemDecoration(new LineItemDecoration(getContext(), DividerItemDecoration.VERTICAL, ContextCompat.getDrawable(getContext(), R.drawable.divider_cell)));

<强>更新

对于涟漪效果,您可以将其添加到单元格根视图的背景中。

android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"