From e8c4faaf0808461f91dfcf9e81bbed051f0d4250 Mon Sep 17 00:00:00 2001 From: Alan Lee Date: Fri, 1 Nov 2024 01:27:40 -0700 Subject: [PATCH] fix Modal content being cut off when Android Activity is edge-to-edge (#47339) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/47339 Fixing issue raised in https://github.com/facebook/react-native/issues/47307 This is a follow up from D62286026. It appears there was a line that went missing while trying to refactor the code. `fitsSystemWindows = true` is needeod for < API 30 to avoid content rendering under the system bars when Modal is shown with Activity that is edge-to-edge. Changelog: [Android][Fixed] Fix Regression - Modal content rendering below system bar on < API 30 when activity is edge-to-edge Reviewed By: cortinico Differential Revision: D65280014 fbshipit-source-id: 616ff739be55635f1295ef3bf8b997a27ef769ae --- .../com/facebook/react/views/modal/ReactModalHostView.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt index 3a0c9280dea6b9..6d35080df3553f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt @@ -296,7 +296,14 @@ public class ReactModalHostView(context: ThemedReactContext) : * changed. This has the pleasant side-effect of us not having to preface all Modals with "top: * statusBarHeight", since that margin will be included in the FrameLayout. */ - get() = FrameLayout(context).apply { addView(dialogRootViewGroup) } + get() = + FrameLayout(context).apply { + addView(dialogRootViewGroup) + if (!statusBarTranslucent) { + // this is needed to prevent content hiding behind systems bars < API 30 + this.fitsSystemWindows = true + } + } /** * updateProperties will update the properties that do not require us to recreate the dialog