我正在使用以下代码动态更改跨度计数。
val layoutManager = GridLayoutManager(this, 3)
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
when (position) {
0, 1, 2 -> return 1
3, 4 -> return 2
5 -> return 3
else -> return 1
}
}
}
我得到了以下输出。 但我希望 D 和 E 应该水平对齐。我不知道该怎么做。
实际上我在适配器中有 3 种类型,HEADER、TYPE_A、TYPE_B。 HEADER应该只有一行,TYPE_A是3行,TYPE_B是2行。
所以我可以得到帮助,使一些列应该有一个 1 行,一些只有 2 行(水平对齐),一些有 3 行。
最佳答案
在那种情况下,您应该让您的网格布局有 3 个以上的单元格。您需要选择一个适用于所有三种类型的单元格的数字,6 是好的,因为要按行有 3 个单元格,您会返回 2。要按行有 2 个单元格,您会返回 3 并且有逐行 1 个单元格,您将返回 6:
val layoutManager = GridLayoutManager(this, 6)
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
when (position) {
0, 1, 2 -> return 2
3, 4 -> return 3
5 -> return 6
else -> return 2
}
}
}
关于android - RecyclerView 的 GridLayoutManager 动态跨度计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51244151/