MaterialDesignDemo icon indicating copy to clipboard operation
MaterialDesignDemo copied to clipboard

MyDecorationTwo 类中的方法 isLastRow()的判断条件有误

Open Asura-64 opened this issue 8 years ago • 3 comments

在 MyDecorationTwo 类中的方法 isLastRow() 的判断条件应该是 if ((itemCount - itemPosition) < spanCount),不需要再减1 了。

Asura-64 avatar May 24 '17 02:05 Asura-64

-1是有必要的。如果itemCount=9,spanCount=3(这是一个九宫格),则最后一行有3个item,对应的itemPosition分别是6、7和8,不-1的话,则判断为9-6 = 3<3,9-7=2<3,9-8=1<3,对于itemPosition = 6时判断是不成立的。对吧。

GitLqr avatar May 24 '17 02:05 GitLqr

按照你说的这个例子是对的,但是不适用所有情况。我改了一下这个判断方法: // Log.d(TAG, "isLastRow: " + spanCount + "----------" + itemCount + "------" + itemPosition); // if ((itemCount - itemPosition - 1) < spanCount) // return true; //最后一行的子项个数 int lastRowCount = itemCount % spanCount == 0 ? spanCount : itemCount % spanCount; //当前的位置itemPosition加上最后一行的子项个数lastRowCount减去总的个数>=0的话,说明这个位置itemPosition是最后一行的 if ((itemPosition + lastRowCount) - itemCount >= 0) { Log.d(TAG, "isLastRow: " + itemPosition + "------true"); return true; }

Asura-64 avatar May 24 '17 04:05 Asura-64

楼上算法高见,解决了最后一行不足时,上一行分割线下移的bug, 我在使用时,给revycleview 设置pading 值,结果右和底分割线始终存在,不清楚问题在哪?设置margin可以。

xuehuashi avatar Oct 07 '17 04:10 xuehuashi