如何在cardview中水平和垂直放置相等的空间

时间:2015-12-30 10:23:13

标签: android android-layout android-recyclerview android-cardview

我希望适配器中的cardview之间有一些相等的空间。

如何放置这样的空间?

enter image description here

这是我的Xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    card_view:cardBackgroundColor="@color/White"
    card_view:cardCornerRadius="4dp"
    card_view:cardElevation="2dp"
    card_view:cardUseCompatPadding="true"
    card_view:contentPadding="4dp">
....

上面的代码就像这样......

enter image description here

有人能帮助我吗?

3 个答案:

答案 0 :(得分:0)

使用RecyclerView.Adapter的getItemViewType()函数以及由各自的边距组成的单独视图可以正常工作,但在绑定数据时会变得非常混乱,特别是对于处理Play Store应用程序等输入事件(屏幕截图)您在帖子中分享了)因为每个视图持有者在实现点击事件的接口时都有自己的边距。

尽管如此,我所遇到的唯一理想,简洁的解决方案是充分利用ItemDecoration类,您可以相应地将偏移量(在我们的例子中为边距)应用于每个膨胀的列表项,然后将其添加到您的RecyclerView。如文档中所述:

  

ItemDecoration允许应用程序从适配器的数据集向特定项目视图添加特殊的绘图和布局偏移。这对于在项目,突出显示,可视分组边界等之间绘制分隔符非常有用。

可以找到示例实现here

答案 1 :(得分:-1)

CardView换成LinearLayout并将padding属性设为LinearLayout

答案 2 :(得分:-1)

使用以下方式检查cheesesquare代码(在您的情况下,在recycleview项目布局中使用此代码)

enter image description here

<android.support.v7.widget.CardView 
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="10dip">

                    <LinearLayout
                        android:id="@+id/relativeLayout1"
                        style="@style/Widget.CardContent"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center_horizontal"
                        android:orientation="vertical">
                         // add your content here!
                    </LinearLayout>
                </android.support.v7.widget.CardView>

Widget.CardContent

<style name="Widget.CardContent" parent="android:Widget">
        <item name="android:paddingLeft">10dp</item>
        <item name="android:paddingRight">10dp</item>
        <item name="android:paddingTop">12dp</item>
        <item name="android:paddingBottom">12dp</item>
        <item name="android:orientation">vertical</item>
    </style>