RecyclerView 的 GridLayoutManager 动态跨度计数
RecyclerView's GridLayoutManager dynamic span count
我正在使用以下代码动态更改跨度计数。
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 个单元格,您需要 return a 2。要按行有 2 个单元格,您需要 return a 3 并按行有 1 个单元格 return a 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
}
}
}
我正在使用以下代码动态更改跨度计数。
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 个单元格,您需要 return a 2。要按行有 2 个单元格,您需要 return a 3 并按行有 1 个单元格 return a 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
}
}
}