我希望创建以下布局(红色sqaures不一定是正方形,自定义固定高度也很好).布局似乎很简单,但我找不到适合我需要的布局管理器.
我尝试了StaggeredGridLayoutManager,但这只允许设置列或行的跨度,而不是两者.
在自定义布局管理器周围是否有浮动能够执行此操作?
我看过TwoWayView但是改变高度似乎有问题而且库没有被维护.
有人遇到这个问题并解决了吗?
解决方法
有点晚了,但它可能会帮助其他人……
我正在寻找同样的东西,最后,经过2天的谷歌搜索,我找到了解决方案.非常感谢Nick Butcher!他的布局管理器名为SpannableGridLayoutManager能够做到这一点.在我的情况下,我正在做一个类似前两行的模式:
解决方案很简单:
1.下载SpannableGridLayoutManager from here
出于某种原因,我不得不改变这一行:
while (availableSpace > 0 && lastVisiblePosition < lastItemPosition) {
至
while (lastVisiblePosition < lastItemPosition) {
让经理工作.
2.将SpannableGridLayoutManger设置为RecyclerView
就我而言:
SpannedGridLayoutManager manager = new SpannedGridLayoutManager( new SpannedGridLayoutManager.GridSpanLookup() { @Override public SpannedGridLayoutManager.SpanInfo getSpanInfo(int position) { // Conditions for 2x2 items if (position % 6 == 0 || position % 6 == 4) { return new SpannedGridLayoutManager.SpanInfo(2,2); } else { return new SpannedGridLayoutManager.SpanInfo(1,1); } } },3,// number of columns 1f // how big is default item );
这给了我我想要的东西(数字是适配器中项目的位置):
编辑:带有样式的错误
将这些行放入attrs.xml
<declare-styleable name="SpannedGridLayoutManager"> <attr name="android:orientation" /> <attr name="spanCount" /> <attr name="aspectRatio" format="string" /> </declare-styleable>