Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 基于视图反应本机状态栏配置_Android_React Native - Fatal编程技术网

Android 基于视图反应本机状态栏配置

Android 基于视图反应本机状态栏配置,android,react-native,Android,React Native,我在我的应用程序中使用抽屉导航,其中我的主屏幕的状态栏设置为透明,如下所示: Home.js: 如果我导航到另一条路径,在该路径中,我有相同的状态栏和不同的barStyle,这也很有效: Second.js: 但是,如果要返回主屏幕(使用抽屉),则条形样式不会恢复为黑色内容 当文档说明状态栏的颜色应该根据路线而改变,而不必重新渲染时,您知道为什么会发生这种情况吗:正如Andrew在其上文中指出的,最好使用导航事件来管理状态栏,我最终订阅了导航事件侦听器,以便更改每个视图的状态栏颜色和样式: c

我在我的应用程序中使用抽屉导航,其中我的主屏幕的状态栏设置为透明,如下所示:

Home.js:

如果我导航到另一条路径,在该路径中,我有相同的状态栏和不同的
barStyle
,这也很有效:

Second.js:

但是,如果要返回主屏幕(使用抽屉),则
条形样式
不会恢复为
黑色内容


当文档说明状态栏的颜色应该根据路线而改变,而不必重新渲染时,您知道为什么会发生这种情况吗:

正如Andrew在其上文中指出的,最好使用导航事件来管理状态栏,我最终订阅了导航事件侦听器,以便更改每个视图的状态栏颜色和样式:

componentDidMount() {
    const onWillFocusSubscription = this.props.navigation.addListener(
        'willFocus',
        payload => {
            StatusBar.setBarStyle("dark-content");
            StatusBar.setBackgroundColor("transparent");
            StatusBar.setTranslucent(true);
        }
    );
}

componentWillUnmount() {
    onWillFocusSubscription.remove();
}

不幸的是,我发现它从来没有像它应该的那样工作。我发现最好的选择是使用导航事件来管理它。这样你就能完全控制它了。这是一个痛苦的过程,对你的代码来说是一个额外的锅炉板,但这确实意味着你不需要依赖其他东西来为你改变它。