在 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 中的单元格之间添加空间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
循环遍历范围,如果单元格包含值,则复制到列中的下一个空单元格