关于 GridLayoutManager 的 SpanSizeLookup

效果图

代码

 GridLayoutManager layoutManager = new ScrollGridLayoutManager(getActivity(),6, GridLayoutManager.VERTICAL, false);
 GridLayoutManager.SpanSizeLookup spanSizeLookup = new GridLayoutManager.SpanSizeLookup() {
      @Override
      public int getSpanSize(int position) {
          //5个时为前两个为2列、后三个为3列
          if (position < 2) {
              return 3;
          } else {
              return 2;
          }
      }
};

参数说明

参数备注
spanCount每行排列 item 个数,在GridLayoutManager对象创建时需要传入
spanSize当前位置的 item 跨度大小,在 setSpanSizeLookup() 方法返回

解答一波

  1. 为什么前两个为2列、后三个为3列时,spanCount 等于6 ?
    因为 spanCount 等于 2于3的最小公倍数
    例如3、4、5
    3=3
    4=2x2
    5=5
    然后将各式子的相同部分合并成一个质数,再乘以剩下的质数。
    上面三式没有相同部分,只有3,2x2,5是不相同部分。
    所以 spanCount 的值是 3x2x2x5=60
  1. 为什么前两个为2列、后三个为3列时,spanCount 等于6,position < 2返回 3,否则返回 2。
    因为 每行的item数 = spanCount / spanSize

 


作者:五碗饭
链接:https://www.jianshu.com/p/b61c28ab2f24
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值