Android EpoxyRecyclerView - 切换方向
Android EpoxyRecyclerView - switching orientation
我正在尝试使用 Epoxy 构建以下布局结构:
前三个布局来自 EpoxyAModel。
第四个来自EpoxyBModel。
这是我的 buildModels 函数:
override fun buildModels() {
aModels.forEach { //this happens 3 times
modelA {
id("someID")
(...)
}
}
modelB {
id("someID2")
(...)
}
}
通过此设置,我得到以下结果:
这是可以理解的,因为 EpoxyRecyclerView
的文档说:
If the RecyclerView is set to match_parent size then the scrolling
orientation is set to vertical and setHasFixedSize is set to true.
If the height is set to wrap_content then the scrolling orientation is
set to horizontal, and setClipToPadding is set to false for carousel
usage.
我的问题是:是否有可能获得预期的效果,或者我是否必须定义另一个 EpoxyRecyclerView
和控制器?
提前致谢。
好的,我明白了!
首先,我们需要给EpoxyRecyclerView
分配一个GridLayoutManager
:
recyclerView.layoutManager = GridLayoutManager(context, 3)
然后,在 EpoxyBModel
中,我们需要覆盖 getSpanSize
方法来告诉布局管理器这个元素和整行项目一样大:
override fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int = 3
我正在尝试使用 Epoxy 构建以下布局结构:
前三个布局来自 EpoxyAModel。 第四个来自EpoxyBModel。
这是我的 buildModels 函数:
override fun buildModels() {
aModels.forEach { //this happens 3 times
modelA {
id("someID")
(...)
}
}
modelB {
id("someID2")
(...)
}
}
通过此设置,我得到以下结果:
这是可以理解的,因为 EpoxyRecyclerView
的文档说:
If the RecyclerView is set to match_parent size then the scrolling orientation is set to vertical and setHasFixedSize is set to true.
If the height is set to wrap_content then the scrolling orientation is set to horizontal, and setClipToPadding is set to false for carousel usage.
我的问题是:是否有可能获得预期的效果,或者我是否必须定义另一个 EpoxyRecyclerView
和控制器?
提前致谢。
好的,我明白了!
首先,我们需要给EpoxyRecyclerView
分配一个GridLayoutManager
:
recyclerView.layoutManager = GridLayoutManager(context, 3)
然后,在 EpoxyBModel
中,我们需要覆盖 getSpanSize
方法来告诉布局管理器这个元素和整行项目一样大:
override fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int = 3