在RecyclerView中如何在单元格之间添加间距?

3
在我的recyclerview中,项目之间紧贴在一起,我想在项目之间添加间距,但不想在项目本身中添加边距。我想知道如何实现这一点?目前它看起来像这样:enter image description here我希望它看起来像这样:enter image description here 我能否编辑XML本身来实现这一点?
<androidx.recyclerview.widget.RecyclerView
                android:id="@+id/list"
                android:background="@color/gray6"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:animationCache="false"
                android:cacheColorHint="@color/transparent"
                android:descendantFocusability="afterDescendants"
                android:divider="@color/transparent"
                android:dividerHeight="0dp"
                android:listSelector="@color/transparent"
                android:scrollingCache="false" />
2个回答

2

您可以通过制作自定义RecyclerView装饰器来完成此操作,例如:

class MarginItemDecoration(private val spaceHeight: Int) : RecyclerView.ItemDecoration() {
    override fun getItemOffsets(outRect: Rect, view: View, 
        parent: RecyclerView, state: RecyclerView.State) {        with(outRect) {
            if (parent.getChildAdapterPosition(view) == 0) {
                top = spaceHeight
            }
            left =  spaceHeight
            right = spaceHeight
            bottom = spaceHeight
        }
    }
}

将其添加到您的RecyclerView中:

recyclerView.addItemDecoration(MarginItemDecoration(
        resources.getDimension(R.dimen.default_padding).toInt()))

但是,这种方法有点冗长,我建议在您的RecyclerView行的xml中添加边距,这也是一个好方法,不用担心!


2
您可以使用DividerItemDecoration,例如:
public static class DividerItemDecoration extends RecyclerView.ItemDecoration {
    int spacing;
    public DividerItemDecoration(Context context, int spacing) {
        this.spacing=spacing;
    }
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
         outRect.bottom=spacing;
    }
}

然后添加这个。
recyclerView.addItemDecoration(new DividerItemDecoration(30));

其中30是你需要的间距,你可以将其更改为任何数字。

//将这两个代码添加到包含recylerview的活动中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接