我正在尝试做的事情:
我正在尝试创建一个交错的网格布局,该布局采用具有不同宽度和 高度的项目。布局动态移动项目,使它们不重叠。
我尝试过的:
我研究过使用默认的 StaggeredGridLayoutManager
,但它似乎只能在一个方向上工作(即垂直或水平)。此外,我遇到的每个库或教程也只处理包含动态高度或动态宽度但不能同时包含两者的项目。
有没有办法让 StaggeredGridLayoutManager
在垂直和水平方向上动态跨越?或者我必须创建自己的自定义布局管理器吗?如果是后者,有人可以指出正确的方向以了解如何创建这样的布局管理器吗?
最佳答案
代替 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)
可以通过使用父级的跨度因子和高度计算高度来应用行跨度
关于android - 可在两个方向上工作的交错网格布局管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56944351/