Skip to content

Commit 3abb050

Browse files
committed
fix scrollY when the GridView has vertical spacing
1 parent 47a5fb2 commit 3abb050

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

library/src/main/java/com/github/ksoichiro/android/observablescrollview/ObservableGridView.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,14 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
386386
}
387387
}
388388

389+
@Override public int getVerticalSpacing() {
390+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
391+
return super.getVerticalSpacing();
392+
}
393+
// getVerticalSpacing was added in 16. We could use reflection to get the value on pre-JB, but that would be expensive.
394+
return 0;
395+
}
396+
389397
private void init() {
390398
mChildrenHeights = new SparseIntArray();
391399
mHeaderViewInfos = new ArrayList<>();
@@ -435,7 +443,7 @@ private void onScrollChanged() {
435443
}
436444
}
437445
}
438-
mPrevScrolledChildrenHeight += mPrevFirstVisibleChildHeight + skippedChildrenHeight;
446+
mPrevScrolledChildrenHeight += mPrevFirstVisibleChildHeight + skippedChildrenHeight + getVerticalSpacing();
439447
mPrevFirstVisibleChildHeight = firstVisibleChild.getHeight();
440448
} else if (firstVisiblePosition < mPrevFirstVisiblePosition) {
441449
// scroll up
@@ -447,7 +455,7 @@ private void onScrollChanged() {
447455
}
448456
}
449457
}
450-
mPrevScrolledChildrenHeight -= firstVisibleChild.getHeight() + skippedChildrenHeight;
458+
mPrevScrolledChildrenHeight -= firstVisibleChild.getHeight() + skippedChildrenHeight + getVerticalSpacing();
451459
mPrevFirstVisibleChildHeight = firstVisibleChild.getHeight();
452460
} else if (firstVisiblePosition == 0) {
453461
mPrevFirstVisibleChildHeight = firstVisibleChild.getHeight();

0 commit comments

Comments
 (0)