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

第三周 LAYOUT

图标文字三均分网格显示

recyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽

带有 Gridlayoutmanager 的 RecyclerView 加载和响应速度极慢