GridLayoutManager中setSpanSizeLookup()的基本操作,实现布局多样化

本文介绍了如何通过GridLayoutManager的setSpanSizeLookup方法,创建1-2-1-2的布局效果。文章提到,可以利用setSpanSizeLookup的getSpanSize()方法自定义每个item占据的格子数,但需要注意返回值不超过总格子数。示例代码中并未展示全部,而是提供了关键部分,并给出了GitHub代码链接供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

在这里插入图片描述
上面布局格式为1-2-1-2,你可以使用itemtype做多布局,但是还有一种更简单的方法就是使用GridLayoutManager的setSpanSizeLookup()函数

代码如下

适配器和布局文件的代码就不贴出了,只贴出关键代码

private void initView() {
        recyclerView = findViewById(R.id.recyclerView);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this , 2);
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int i) {
                if (i == 0 || i == 3 || i == 6){
                    return 3;
                }else {
                    return 1;
                }
            }
        });
        recyclerView.setLayoutManager(gridLayoutManager);
        testAdapter = new TestAdapter(list , this);
        recyclerView.setAdapter(testAdapter);
    }

setSpanSizeLookup函数传入一个GridLayoutManager.SpanSizeLookup对象,其内部有一个抽象函数getSpanSize(),你可以设置返回的数值,让当前的item占据几个位置,当然返回的int型数值只能小于等于GridLayoutManager设置span的个数,比如每行item的个数为5个,然后你设置返回6,就会报如下的错误,Google比你想的当然多了。
当然,在给每个item设置占位大小的时候当然不能像上述代码那样直接用位置区分,在实际编写时应该根据设置的标记位来具体区分。

java.lang.IllegalArgumentException: Item at position 0 requires 3 spans but GridLayoutManager has only 2 spans.

代码链接—>github

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值