diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt index afccff625d..2e45ce5cc0 100644 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.kt @@ -6,6 +6,12 @@ import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled import com.facebook.react.defaults.DefaultReactActivityDelegate +import android.os.Build +import android.os.Bundle +import android.view.View +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat + class MainActivity : ReactActivity() { /** @@ -20,4 +26,25 @@ class MainActivity : ReactActivity() { */ override fun createReactActivityDelegate(): ReactActivityDelegate = ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)) + + /** + * This is a workaround to fix the upstream issue https://github.com/facebook/react-native/issues/49759#issuecomment-2918934967 + */ + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (Build.VERSION.SDK_INT >= 35) { + val rootView = findViewById(android.R.id.content) + ViewCompat.setOnApplyWindowInsetsListener(rootView) { _, insets -> + val innerPadding = insets.getInsets(WindowInsetsCompat.Type.ime()) + rootView.setPadding( + innerPadding.left, + innerPadding.top, + innerPadding.right, + innerPadding.bottom + ) + insets + } + } + } }