当前位置: 首页 > 知识库问答 >
问题:

如何在RecyclerView中添加空间?

岳浩宕
2023-03-14

我需要添加一些空间开始的第一项和结束的最后一项的回收,所以他们可以滚动到屏幕的边缘(因为他们不能与回收器视图的边距或填充)

问题是项目之间的间距应该不同,所以我不能只是将这个“空间”添加到项目布局中。现在,我正试图将ItemEdition添加到我的回收器中,但结果就是这样:

  1. 在我触摸它之前,行间距随机出现:随机行间距
  2. 然后,当我滚动到最后并返回时,所需的空间出现在屏幕上适合的最后一项之后,而不是在我的Recycler的最后一项之后。屏幕上适合的最后一项之后的空间没有真正最后一项的空间

我的物品装饰类:

public class HorizontalItemDecoration extends RecyclerView.ItemDecoration {

private final int horizontalSpaceWidth;

public HorizontalItemDecoration(int horizontalSpaceWidth) {
    this.horizontalSpaceWidth = horizontalSpaceWidth;
}

@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, RecyclerView parent,
                           @NonNull RecyclerView.State state) {
    if (parent.getChildAdapterPosition(view) == 0)
        outRect.left = horizontalSpaceWidth;
    else if (parent.getChildAdapterPosition(view) == parent.getChildCount() - 1)
        outRect.right = horizontalSpaceWidth;
}
}

项目之间的默认行间距为4dp。

我还尝试将LayoutParams添加到items的父视图中,但其工作方式完全相同

共有1个答案

蒲魁
2023-03-14

如果位置不是0或n-1,则必须使用否则来重置值,因为视图正在重用

@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, RecyclerView parent,
                           @NonNull RecyclerView.State state) {
    if (parent.getChildAdapterPosition(view) == 0)
        outRect.left = horizontalSpaceWidth;
    else if (parent.getChildAdapterPosition(view) == parent.getChildCount() - 1)
        outRect.right = horizontalSpaceWidth;
   else {
       outRect.right = 0;
       outRect.left = 0;
   }
}
 类似资料:
  • 注意,这个空间只在最末端可见,因为我不想改变布局。我可以使recycerview有一个50dp的边际底部,但我不想这样做。

  • 问题内容: 我打算开发一个可在内显示一些动态数据的应用程序。所以我决定 在main中添加一个 。这是我的应用程序代码: 我的主要活动: 它是布局文件: 在这个rec​​yclerView内部还有另一个: 他们的适配器Main(RAdapter): 和第二个适配器: 我的问题是:正如您在CAdapter中看到的那样,仅显示构造函数的Log消息。 更新:如果有另一种方法可以在另一张动态卡中显示某些动态

  • 我正在尝试一个应用程序的回收器视图和浮动操作按钮。我遇到的问题是浮动操作按钮阻碍了回收器视图中的按钮。我查了手机应用程序(您在gridvew中显示联系人的应用程序)等Android应用程序是如何设计来解决这个问题的,我看到底部留有空白,这为回收器视图和浮动操作按钮之间提供了空间,用户只需滚动到底部以避免重叠。我尝试在回收器视图之后添加一个视图,但没有显示,这个视图也应该随着回收器视图行一起移动。我

  • 问题内容: 如何使用exec.command启动带有空格的文件?添加引号似乎无效,“或%20代替空格也不起作用。 问题答案: 这有效,但仅在Windows中

  • 我尝试在我的GridLayout RecyclerView中添加水平分隔线。但出于某种原因,分割线没有出现。 作为替代方法,我使用具有 2 个参数的 addItemDecoration 方法,其中第二个参数是索引,之后添加 ItemDecoration。 它强制关闭,但有以下例外: 这个尺寸意味着什么?为什么是零? 可能是因为我在活动而不是片段中使用此回收器视图吗? P、 美国:适配器没有问题;它

  • 在我的RecolyerView中,项目贴得很近,我想在项目之间增加空间,而不在项目本身添加边距。我在想我怎么才能做到这一点? 我希望它看起来像: 我是否可以编辑XML本身来实现这一点?