Android 上的全屏 React Native(使用 Modal)

pus*_*its 6 android modal-dialog fullscreen react-native react-native-android

所以我试图以全屏方式运行我的 React Native Android 应用程序,这意味着没有状态栏,底部也没有导航栏。我已将此添加到我的 MainActivity:

protected void goFullScreen()
{
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

}

@Override
protected void onStart()
{
    this.goFullScreen();
    super.onStart();
}
Run Code Online (Sandbox Code Playgroud)

SYSTEM_UI_FLAG_IMMERSIVE_STICKY 基本上可以使您可以从屏幕的顶部或底部边缘滑动以将它们显示出来,然后它们会在一段时间后再次消失。

这很好用,直到我打开任何模态(使用 react-native-modal 包,但它基于常规的 React Native Modal 组件)。此时状态栏和导航栏都会出现。我不是 Android 开发人员,但我认为它基本上为对话框创建了一个全新的窗口/活动/任何名称,它不会继承为主要活动设置的标志。认为这是在这里发生的:

/react-native/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java
Run Code Online (Sandbox Code Playgroud)

它创建了一个新的 app.android.Dialog。

无论如何,我已经能够通过更改 style.xml 中的主题来摆脱状态栏(请参阅此处):

<style name="AppTheme" parent="Theme.ReactNative.AppCompat.Light.NoActionBar.FullScreen">
    <!-- Customize your theme here. -->
</style>
Run Code Online (Sandbox Code Playgroud)

但是,导航栏仍然存在,它在我的应用程序 UI 顶部打开,并且在我关闭对话框后甚至没有消失,所以它完全搞砸了。

任何人都知道我如何才能摆脱它?最好不修补/重建RN?