Skip to content

Commit 6cba6d4

Browse files
committed
fix(android): remove RTL inversion in PageTransformer to prevent negative offset crash
1 parent d2dee5e commit 6cba6d4

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

android/src/main/java/com/reactnativepagerview/PagerViewViewManagerImpl.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,17 @@ object PagerViewViewManagerImpl {
145145
fun setPageMargin(host: NestedScrollableHost, margin: Int) {
146146
val pager = getViewPager(host)
147147
val pageMargin = PixelUtil.toPixelFromDIP(margin.toDouble()).toInt()
148+
if (pageMargin == 0) {
149+
pager.setPageTransformer(null)
150+
return
151+
}
148152
/**
149-
* Don't use MarginPageTransformer to be able to support negative margins
153+
* Don't use MarginPageTransformer to be able to support negative margins.
150154
*/
151155
pager.setPageTransformer { page, position ->
152156
val offset = pageMargin * position
153157
if (pager.orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
154-
val isRTL = pager.layoutDirection == View.LAYOUT_DIRECTION_RTL
155-
page.translationX = if (isRTL) -offset else offset
158+
page.translationX = offset
156159
} else {
157160
page.translationY = offset
158161
}
@@ -184,4 +187,4 @@ object PagerViewViewManagerImpl {
184187
}
185188
Choreographer.getInstance().postFrameCallback(refreshFrameCallback)
186189
}
187-
}
190+
}

0 commit comments

Comments
 (0)