RecycleView 的跨度大小

5 android gridlayoutmanager android-recyclerview

在此处输入图片说明

我正在尝试使用 RecyclerView 和 GridLayoutManager 实现类似于上图的布局,我尝试根据位置设置 setSpanSizeLookup 但无法模仿上面的设计..

有人可以帮忙吗?

    mRecyclerView = (RecyclerView) contentView;
    mRecyclerView.setHasFixedSize(false);

    GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 3);
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return 3 - (position % 3);
        }
    });

    mRecyclerView.setLayoutManager(gridLayoutManager);
Run Code Online (Sandbox Code Playgroud)

..

我得到了什么
在此处输入图片说明

Com*_*are 6

好吧,您希望交替的“行”在两个单元格之间均匀分布。均分需要偶数列,3 不是偶数。因此,将其更改为 2。

现在,您要getSpanSize()返回(按行):

  • 位置 0 = 2(即跨越两个单元格)
  • 位置 1 和 2 = 1(即各占一个单元格)
  • 位置 3 = 2
  • 位置 4 和 5 = 1
  • 等等。

(position % 3) > 0 ? 1 : 2 似乎会给你那个。