android - 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
和控制器?
提前致谢。
解决方案
好的,我想通了!
首先,我们需要将 a 分配GridLayoutManager
给EpoxyRecyclerView
:
recyclerView.layoutManager = GridLayoutManager(context, 3)
然后,在里面EpoxyBModel
我们需要重写getSpanSize
方法来告诉布局管理器这个元素和一整行项目一样大:
override fun getSpanSize(totalSpanCount: Int, position: Int, itemCount: Int): Int = 3
推荐阅读
- arrays - Ruby:过滤数组删除列入黑名单的名称
- google-cloud-platform - 如何从 Cloud Datastore 迁移到 Cloud Spanner?
- c# - 如何检查字符串是否在数组中
- c# - 在不同机器上执行相同 API 的时间差异
- git - RTC 到 Git 迁移问题
- wpf - WPF 样式异常
- asp.net-mvc - 如何仅通过发送用户名和密码从 ADFS 服务器获取令牌而不使用 ADFS 登录页面?
- android - 我如何处理嵌套的 json 对象?
- php - 如何在网购网站上显示“产品描述”?
- google-maps - Qgis Google Base 混合图像更新通知