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);
实现效果如下: