diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java index 26c9aebc8388ad..bfa9da9b0c1af4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java @@ -115,7 +115,9 @@ private void updateScrollPositionInternal() { firstVisibleView.getHitRect(newFrame); if (mHorizontal) { - int deltaX = newFrame.left - mPrevFirstVisibleFrame.left; + int deltaX = + (newFrame.left - mPrevFirstVisibleFrame.left) + + (newFrame.width() - mPrevFirstVisibleFrame.width()); if (deltaX != 0) { int scrollX = mScrollView.getScrollX(); mScrollView.scrollToPreservingMomentum(scrollX + deltaX, mScrollView.getScrollY()); @@ -126,7 +128,9 @@ private void updateScrollPositionInternal() { } } } else { - int deltaY = newFrame.top - mPrevFirstVisibleFrame.top; + int deltaY = + (newFrame.top - mPrevFirstVisibleFrame.top) + + (newFrame.height() - mPrevFirstVisibleFrame.height()); if (deltaY != 0) { int scrollY = mScrollView.getScrollY(); mScrollView.scrollToPreservingMomentum(mScrollView.getScrollX(), scrollY + deltaY);