我有一个要在RecyclerView中显示的表格。目前,我正在使用垂直方向的GridLayoutManager。由于我所有的逻辑都取决于GridLayoutManager的垂直方向,因此我无法切换到水平方向或StaggeredLayoutManager。有没有一种方法可以更改RecyclerView子级的度量,以使每行的第一个单元格可以具有不同的宽度?
答案 0 :(得分:0)
我建议您使用SpanSizeLookup。
类似的东西:
GridLayoutManager manager = new GridLayoutManager(context, 2);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(adapter.getItemViewType(position)) {
// first cell type
case 1:
return 1;
default:
return 2;
}
}
});
在适配器中,您应该覆盖getItemViewType
并为您的单元格返回不同的类型。
答案 1 :(得分:0)
经过一些源代码挖掘,我发现方法GridLayoutManager.calculateItemBorders()负责项目宽度(cachedBorder)。但是由于更改该方法是私有的,因此我们无法覆盖它。
希望这可以帮助面临类似情况的任何人。