首页 > 解决方案 > 如何使用 recyclerview 将网格布局水平居中?

问题描述

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

下面列出的代码是我尝试过的,但它搞砸了,但并没有真正理解它是如何工作的。

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

  1. 我..我
  2. 我..我..我
  3. 我..我..我

我想

  1. ..ii
  2. 我..我..我
  3. 我..我..我
 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);

标签: javaandroidandroid-recyclerviewgrid-layout

解决方案



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

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

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


推荐阅读