防止RecyclerView GridLayout中的子项之间出现双倍间距

时间:2018-12-23 16:54:13

标签: android android-recyclerview

我在具有2列的GridLayout中具有单个Image的以下ImageView。但是它在中间增加了双边距(因为两者都有marginLeft和marginRight)。我该如何预防?

这是xml:

<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    app:srcCompat="@drawable/default_image" />

3 个答案:

答案 0 :(得分:0)

您可以简单地在子级和RecyclerView本身之间拆分左右边距值。

例如,如果您打算在左侧和右侧分别设置8dp边距和在中间设置8dp,则将4dp左侧和右侧边距设置为childs布局,将4dp设​​置为RecyclerView布局。

如果您有多行,则类似的技术也可以应用于顶部和底部边距。

您的子ImageView布局:

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="4dp"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    app:srcCompat="@drawable/default_image" />

您的RecylerView网格布局:

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="4dp"
    app:layoutManager="android.support.v7.widget.GridLayoutManager" />

答案 1 :(得分:0)

您只需将代码替换为以下代码之一即可:

<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    app:srcCompat="@drawable/default_image" />

答案 2 :(得分:0)

使用RecyclerView的addItemDecoration(ItemDecoration装饰)很方便。它比xml更好。