关于 GridLayoutManager 的 SpanSizeL
2019-05-24 本文已影响0人
WotYang
效果图

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