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

RecyclerView-如何使GridLayoutManager强制将某些项目放置在下一行

江建明
2023-03-14

我使用GridLayoutManager将项目垂直放置在回收器视图中。每个项目都有一个跨度。现在我希望一些项目结束当前行,所以下一个项目被放置在它下面的新行上。每个项目只能占用一个跨度,所以它们都是相同的宽度。

例子:

第[4]项将放在下一行,而不是第[3]项之后。第[3]项后的空间不得使用。

我试图使用SpanSizeLookup,但它的spanindex对我来说没有任何意义,任何值似乎都没有任何作用。

有人能提出解决方案吗?

共有1个答案

蒋星驰
2023-03-14
GridLayoutManager manager = new GridLayoutManager(getContext(), 3, LinearLayoutManager.VERTICAL, false);
    manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return position == 3 ? 3 : 1;
        }
});

每个元素的跨度大小默认为1,只需在自定义跨度查找中返回该位置所需的跨度大小即可。

 类似资料:
  • 我知道我可以用跨越两列: 但是我怎样才能使第一个项目也跨越2行呢? 我曾尝试通过将其他项目的高度增加一倍来设置第一个项目的高度,但这导致与第一个项目相同行的每个项目也被拉伸到该高度:

  • 我正尝试在中为每一行水平居中所有项目 我尝试了很多东西:作为父级的RelativeLayout,然后使用layout_centerInParent,使用基本的Android:layout_gravity=“center”,尝试添加一些space元素,使用权重和....在 中,但我没有成功:( 我所拥有的 活动中 item_row.xml 我在谷歌上搜索了很多,找到了这个答案,但实际上我不知道如何为

  • 我的回收物品在onCreateViewHolder中膨胀 我想展示这样的东西,其中一排的高度是回收站视图的一半?在空间的其余部分添加填充物?我可以通过GridLayoutManager来完成吗? 这是我的GridLayoutManager

  • 如何使用网格布局管理器水平显示三行三列的循环视图项目,增加垂直增加的价值,类似于下图

  • 我通过以下步骤针对libc,libc abi,编译器-rt构建clang: > < li> 为了下载(和更新)llvm和子项目,我使用了以下脚本: 首先,我使用 gcc 针对 libgcc 和 libstdc 构建 llvm、clang、libunwind,并将它们安装在 / 中。在以下所有步骤中,除了最后一个,我都使用这个新鲜的叮当。 (我几乎可以肯定,这里没有一个步骤是多余的。) 在最后一步,

  • 我在ScrollView中有一个这样的RecyclerView: 的项目是一个,其中有一个和其他视图。该和的都是。用户可以在没有任何长度/行限制的情况下输入到该中,以便每个项目的高度都不同。 然后我发现中的返回真值,但调用的时间错误(少于应有的时间),因此不足以显示所有项目。 我发现只有当我编写了时才会发生这种情况。但是我不能删除这一行。因为如果我这样做了,将无法流畅滚动,并且与和本身内的其他视图