我要做什么:
我正在尝试创建一个交错的网格布局,以容纳宽度 和 高度不同的项目。布局会动态地移动项目,因此它们不会重叠。
我尝试过的事情:
我调查了使用默认的StaggeredGridLayoutManager
,但它似乎只能在一个方向上使用(即,垂直或水平)。此外,我遇到的每个库或教程都只处理包含动态高度或动态宽度的项目,而不能同时处理这两个项目。
是否有一种方法可以使StaggeredGridLayoutManager
动态地在垂直和水平方向上跨越?还是我必须创建自己的自定义布局管理器?如果是后者,有人可以指出我正确的方向,以了解如何创建这样的布局管理器吗?
答案 0 :(得分: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)
可以通过使用跨度因子和父级的高度计算高度来应用行跨度