GridLayoutManager均分网格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GridLayoutManager均分网格相关的知识,希望对你有一定的参考价值。
参考技术A 下面结论都是基于GridLayoutManager方向为竖直,spanCount为列数的情况,但在水平方向类似。假设一个grid为5列,有一个item在第二行,宽度从第二列开始到最后一列。
那么那么这个item宽度占了4列,所以getSpanSize等于4。
在第二行,所以getSpanGroupIndex等于1。
宽度从第二列开始,所以getSpanIndex等于1。
在使用decoration做间距,getItemOffsets方法中使用Rect为每个item分配间距,如果每个item的左右间距之和不相等,则会导致最终每个item不是均分。
假设每个item之间的间隔为a,记每个item左间距为L0,L1,L2....Ln-1,右间距为R0,R1,R2....Rn-1,n为网格列表的列数。
常数k= ((n-1)*a)/n,每个item分配间距分配到的间距之和。
第一列: L0 = 0, R0= k
第二列:L1 =a-R0, R1 = k-L1
第三列:L2 = a-R1,R2=k-L2
......
第N个:L(n-1) = a - R(n-2), R(n-1) = k-L(n-1)
通过上面关系可以通过整理一个方法
其中
以上是关于GridLayoutManager均分网格的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 GridLayoutManager 的 RecyclerView 的简单 Android 网格示例(如旧的 GridView)
如何在 GridLayoutManager 中准备 setSpanSizeLookup