上图是我正在构建的,我已经完成了默认布局。我使用GridLayoutManager
一个简单的公式(position - 3 * (position / 3)
)+ switch
来计算每个单元格的跨度,然后适配器也调用相同的公式来相应地获取结果以使用正确的布局文件:1:1或16:9(使用ConstraintLayout
+ ImageView
)。还有ItemDecoration
在每个单元格之间添加4dp的空白区域。
现在,当我开始构建最小宽度= 600的配置时,会出现一些问题:由于每个元素之间有一个小的边距,因此较宽的一个的大小实际上略小于2:1,这意味着更宽的单元格比1:1的细胞略高。例如,当2幅图像之间存在4dp的边距时,600dp中较宽单元的完美比例应为398:198。
我知道我总是可以将多个布局文件合并为1以确保每一行共享相同的高度,但由于我想继续添加更多配置,因此代码最终可能会变得非常混乱。所以我的问题是:
1)是否可以使用GridLayoutManager进行操作?如果是,怎么样?
2)即使GridLayoutManager可以完成这项工作,还有更好的方法吗?自定义LayoutManager可能吗?
答案 0 :(得分:1)
是的,您可以使用GridLayoutManager执行此操作,但它很复杂。 Android提供了StaggeredGridLayoutManager来实现这种类型的视图。使用recyclerview可以轻松实现。
this.props.posts
例如 https://android--code.blogspot.in/2015/12/android-recyclerview.html
官方文档:
https://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager.html
答案 1 :(得分:0)
啊,当然已经有了这样做的图书馆:https://github.com/Arasthel/SpannedGridLayoutManager
仍在尝试,但到目前为止它似乎正是我需要做的事情!