RecyclerView 实现不固定列数的网格布局

RecyclerView 实现网格布局是通过设置 GridLayoutManager 来实现的,通常是这样设置的:

    mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));

这样设置的效果是每一行都有 3 列,很对称。

但如果我想要不同行有不同的列数,例如第一行只有一列,而其他行有 3 列。可以这样做:

    GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);   
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int i) {
            return i == 0? 3 : 1;
            // 表示第 0 个 item 占 3 列(即占一整行),其他 item 占一列
        }
    });
    mRecyclerView.setLayoutManager(gridLayoutManager);

实现效果如下:

RecyclerView 实现不固定列数的网格布局_第1张图片

参考

  • RecyclerView GridLayoutManager实现复杂的列数变化的布局

你可能感兴趣的:(android)