【问题标题】:RecyclerView's GridLayoutManager dynamic span countRecyclerView 的 GridLayoutManager 动态跨度计数
【发布时间】:2018-07-09 11:10:14
【问题描述】:

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

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 行。

【问题讨论】:

    标签: android android-recyclerview gridlayoutmanager


    【解决方案1】:

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

    【讨论】:

    • 嘿,如果我想在第一行显示三个项目,但在第二行只显示两个,因为我们不能将 spansize 指定为 1.5,因为它只允许 INT ,那么最好的方法是什么?这样做,所以我想要顶行中的 3 个项目,底行中的两个项目等距
    • @coding.cat3 你有什么解决方案吗,如果有,请发布你的解决方案 我也在寻找同样的问题
    猜你喜欢
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多