From 26a013a274069fb47936b00e09b6b74ab94e3952 Mon Sep 17 00:00:00 2001 From: Andrey Mikus Date: Tue, 3 Nov 2026 22:17:14 +0100 Subject: [PATCH] Fix `overflow: 'visible'` on `ScrollView` with a `refreshControl` on Android On Android, a ScrollView with a refreshControl is wrapped in a ReactSwipeRefreshLayout. It kept ViewGroup's default clipChildren = true, which clips each child to its own bounds, so the ScrollView's content was cut at the ScrollView's edges even with overflow: 'visible'. Turn off child clipping, as ReactViewGroup and ReactScrollView already do. ReactScrollView still clips itself in onDraw unless its overflow is visible, so a ScrollView with the default overflow keeps clipping its content. The spinner is drawn inside its own bounds, so it is unaffected. --- .../react/views/swiperefresh/ReactSwipeRefreshLayout.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt index d2c6fc8d6d90..b4a517d3b949 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.kt @@ -31,6 +31,10 @@ public open class ReactSwipeRefreshLayout(reactContext: ReactContext) : override var hasChildPressedStateDelay: Boolean? = null + init { + clipChildren = false + } + public override fun setRefreshing(refreshing: Boolean) { this.refreshing = refreshing