gpt4 book ai didi

android - RecyclerView 的 GridLayoutManager 动态跨度计数

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:07 25 4
gpt4 key购买 nike

我正在使用以下代码动态更改跨度计数。

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_BHEADER应该只有一行,TYPE_A是3行,TYPE_B是2行。

所以我可以得到帮助,使一些列应该有一个 1 行,一些只有 2 行(水平对齐),一些有 3 行。

enter image description here

最佳答案

在那种情况下,您应该让您的网格布局有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com