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

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

目前它看起来像这样:

我希望它看起来像:

我可以编辑 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" />

【问题讨论】:

    标签: android android-recyclerview


    【解决方案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中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 2011-01-05
        • 2012-03-04
        • 1970-01-01
        相关资源
        最近更新 更多