Android上的全屏React Native(带模态)

时间:2018-01-09 10:04:01

标签: android react-native modal-dialog fullscreen 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();
}

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

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

无论如何,我已经能够通过更改styles.xml(see here)中的主题来摆脱状态栏:

<style name="AppTheme" parent="Theme.ReactNative.AppCompat.Light.NoActionBar.FullScreen">
    <!-- Customize your theme here. -->
</style>

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

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

0 个答案:

没有答案