本质上是一个数学归纳问题。
参考文章:https://blog.csdn.net/qq_41872247/article/details/106764746
我们需要计算的是相对于系统默认的偏移量。
假设屏幕宽度是w,一共有n列,最左间距是a,最右间距是c,列之间间距是b。
C表示每列宽度,C=(w - a - c - b * (n -1)) / n
默认情况下,RecyclerView自动分列如下:
C1 + p + ... + Cn + p
其中,p=(w - n * C) / n
则第k列(从0开始)的x坐标为:k * (C + p)
实际上,我们需要的分列如下:
a + C1 + p2 + ... + Cn + c
其中,p2=(w - a - c - n * C) / (n-1)
则第k列(从0开始)的x坐标为:a + k * (C + p2)
因此,最终偏移量即(无需设置right):
rect.left = a + k * (C + p2) - k * (C + p)