2

我正在尝试做的事情:

我正在尝试创建一个交错的网格布局,该布局采用不同宽度高度的项目。布局动态地移动项目,因此它们不会重叠。

我试过的:

我研究过使用 default StaggeredGridLayoutManager,但它似乎只能在一个方向上工作(即垂直水平)。此外,我遇到的每个库或教程也只处理包含动态高度或动态宽度的项目,但不能同时包含两者。

有没有办法让StaggeredGridLayoutManager动态跨越垂直和水平?还是我必须创建自己的自定义布局管理器?如果是后者,有人能指出我正确的方向来了解如何创建这样的布局管理器吗?

4

1 回答 1

0

代替StaggeredGridLayoutManager,GridLayoutManager可以和 一起使用spanSizeLookup。使用spanSizeLookup,我们可以指定列跨度。

mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
 item[position].columnSpan
}
}

在创建 GridLayoutManager 时,指定这样的最大列数

layoutManager = GridLayoutManager(context, MAX_NUM_COL)

可以通过使用父级的跨度因子和高度计算高度来应用行跨度

于 2019-10-20T15:32:44.400 回答