如何使用recyclerview将网格布局水平居中?

时间:2019-05-08 20:38:11

标签: java android android-recyclerview grid-layout

我正在尝试使用回收站视图来居中网格布局。

下面列出的代码是我尝试过的,但后来被弄乱了,但并没有真正理解它的工作原理。

图标显示类似于下面的内容。

  1. i ..i
  2. i..i..i
  3. i..i..i

我想要

  1. .. i.i
  2. i..i..i
  3. i..i..i
 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 6, RecyclerView.VERTICAL, true);
        final int totalSize = Cards.size();
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                int span;
                span = totalSize % 3;
                if (totalSize < 3) {
                    return 6;
                } else if (span == 0 || (position <= ((totalSize - 1) - span))) {
                    return 2;
                } else if (span == 1) {
                    return 6;
                } else {
                    return 3;
                }
            }
        });
        recyclerView.setLayoutManager(gridLayoutManager);

1 个答案:

答案 0 :(得分:0)


您在getSpanSize中返回的整数指定特定单元格应占用的列宽。从您的代码中,您似乎需要大多数元素占据布局宽度的三分之一

     (position <= ((totalSize - 1) - span))

在大多数情况下,该代码返回true,但最后几个单元格除外。我认为您编写的代码有缺陷,并且我无法理解您真正需要什么。如果您有可以共享的图片,那将极大地帮助您获得解决方案的帮助。