首页 > 解决方案 > Android EpoxyRecyclerView - 切换方向

问题描述

我正在尝试使用 Epoxy 构建以下布局结构:

在此处输入图像描述

前三个布局来自 EpoxyAModel。第四个来自 EpoxyBModel。

这是我的 buildModels 函数:

override fun buildModels() {

    aModels.forEach { //this happens 3 times
        modelA {
            id("someID")
            (...)

        }
    }

    modelB {
        id("someID2")
        (...)
    }

}

通过此设置,我得到以下结果:

在此处输入图像描述

这是可以理解的,因为文档EpoxyRecyclerView说:

如果 RecyclerView 设置为 match_parent 大小,则滚动方向设置为垂直,并且 setHasFixedSize 设置为 true。

如果高度设置为 wrap_content,则滚动方向设置为水平,并且 setClipToPadding 设置为 false 以使用轮播。

我的问题是:是否有可能获得预期的效果,还是我必须定义另一个EpoxyRecyclerView和控制器?

提前致谢。

标签: androidandroid-recyclerviewepoxy

解决方案


好的,我想通了!

首先,我们需要将 a 分配GridLayoutManagerEpoxyRecyclerView

recyclerView.layoutManager = GridLayoutManager(context, 3)

然后,在里面EpoxyBModel我们需要重写getSpanSize方法来告诉布局管理器这个元素和一整行项目一样大:

override fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int = 3

推荐阅读