在 RecyclerView 中的单元格之间添加空间? [复制]

Posted

技术标签:

【中文标题】在 RecyclerView 中的单元格之间添加空间? [复制]【英文标题】:Add space between cells in RecyclerView? [duplicate] 【发布时间】:2021-01-31 04:08:12 【问题描述】:

在我的回收站视图中,项目被紧紧地粘在一起,我想在项目之间添加空间而不在项目本身中添加边距。我想知道如何才能做到这一点?

目前它看起来像这样:

我希望它看起来像:

我可以编辑 XML 本身来完成这个吗?

<androidx.recyclerview.widget.RecyclerView
                android:id="@+id/list"
                android:background="@color/gray6"
                android:layout_
                android:layout_
                android:animationCache="false"
                android:cacheColorHint="@color/transparent"
                android:descendantFocusability="afterDescendants"
                android:divider="@color/transparent"
                android:dividerHeight="0dp"
                android:listSelector="@color/transparent"
                android:scrollingCache="false" />

【问题讨论】:

【参考方案1】:

也可以像这样制作自定义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.addItemDecoration(MarginItemDecoration(
        resources.getDimension(R.dimen.default_padding).toInt()))

但是,这种方法有点冗长,我建议将margin放在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 是您需要的间距,您可以将其更改为任意数字。

//将这两个代码添加到包含recyclerview的activity中。

【讨论】:

以上是关于在 RecyclerView 中的单元格之间添加空间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

获取 Google 表格列中的最后一个非空单元格

在swift 2中的一个部分中添加单元格之间的空间

循环遍历范围,如果单元格包含值,则复制到列中的下一个空单元格

取消选择 RecyclerView 单元格,但点击它之外的任何地方

处理 VBA 中的空单元格以进行访问

如何在swift ios中的两个自定义表格视图单元格之间添加间距?