android – RecyclerView layoutmanager用于更改行和列跨度

我希望创建以下布局(红色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>

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...