在 android 中 React 本机状态栏无法与 react-navigation 一起使用
React native statusbar not working with react-navigation in android
版本:
"native-base": "^2.4.2",
"react": "16.3.1",
"react-native": "0.55.2",
"react-native-global-font": "^1.0.1",
"react-native-router-flux": "^4.0.0-beta.28",
"react-navigation": "^1.5.11"
当我添加 react-navigation 时,我无法更改状态栏颜色,我的状态栏变成了蓝色。
这是我的 Navigationview.js 代码
render() {
return (
<Root style={styles.container}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
<MainView />
</Root>
);
}
const drawerHeader = (props) => (
<Container style={styles.container}>
<Header style={styles.header}>
<Body style={styles.body}>
<Icon name="person" style={{ fontSize: 40, color: '#CCCCCC' }} />
</Body>
</Header>
<Content>
<SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}>
<DrawerItems {...props} />
<Button title="Logout" onPress={() => Actions.reset('login')} />
</SafeAreaView>
</Content>
</Container>
);
const MainView = DrawerNavigator({
DASHBOARD: {
screen: Dashboard,
},
LOGOUT: {
screen: LoginForm,
}
}, {
initialRouteName: 'DASHBOARD',
contentComponent: drawerHeader,
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToogleRoute: 'DrawerToogle'
});
i even set statusbar color in Dashboard screen, still not change.
Dashboard.js
<Container>
<Header androidStatusBarColor="#FFF" style={{backgroundColor:'#000'}}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
<Body>
<Title style={{color:'#FFF'}}>My App</Title>
</Body>
</Header>
<Content>
//content of your app goes here
</Content>
</Container>
I m also using native-base, so i add this code in my App.js file
render() {
return (
<Root style={styles.container}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
{this.spinerRender()}
</Root>
);
}
这适用于我的登录和登录屏幕,但不适用于我的导航视图屏幕。
登录和登录屏幕状态栏
导航屏幕状态栏
现在修复了。
问题是基于本机的组件,因此我将 contentComponent 视图更改为此。
<SafeAreaView style={{flex: 1}}>
<View style={styles.container}>
<StatusBar backgroundColor={'red'} barStyle={'dark-content'} translucent={false} />
....
</SafeAreaView>
我的问题略有不同。
我导航的前一个屏幕已将 StatusBar
hidden 设置为 true。
// previous screen that I navigated from
<StatusBar hidden animated />
所以我不得不在新屏幕上明确地将 StatusBar
隐藏更改为 false
,将 animated
更改为 true
:
// new screen needs hidden={false} to show up
<StatusBar hidden={false} animated />
对于任何使用 native-base Header
并遇到此问题的人,您可以像下面这样使用道具 androidStatusBarColor
<Header style={styles.header} androidStatusBarColor="#f8bb12">
对于任何使用 native-base Header 并遇到此问题的人,您可以像下面这样使用 iosBarStyle 属性
<Header
iosBarStyle="dark-content"
您可以这样做以排除缺口(如果存在)。
import React from "react";
import {Text, SafeAreaView, StatusBar} from "react-native";
export default function App() {
return (
<React.Fragment>
<StatusBar hidden />
<SafeAreaView>
<Text>Your Code</Text>
</SafeAreaView>
</React.Fragment>
);
}
使用StatusBar with hidden可以排除top notch
React Native 应用中的状态栏颜色
<View>
<StatusBar backgroundColor="red"></StatusBar>
<Text>
hii
<Text>
</View>
版本:
"native-base": "^2.4.2",
"react": "16.3.1",
"react-native": "0.55.2",
"react-native-global-font": "^1.0.1",
"react-native-router-flux": "^4.0.0-beta.28",
"react-navigation": "^1.5.11"
当我添加 react-navigation 时,我无法更改状态栏颜色,我的状态栏变成了蓝色。
这是我的 Navigationview.js 代码
render() {
return (
<Root style={styles.container}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
<MainView />
</Root>
);
}
const drawerHeader = (props) => (
<Container style={styles.container}>
<Header style={styles.header}>
<Body style={styles.body}>
<Icon name="person" style={{ fontSize: 40, color: '#CCCCCC' }} />
</Body>
</Header>
<Content>
<SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}>
<DrawerItems {...props} />
<Button title="Logout" onPress={() => Actions.reset('login')} />
</SafeAreaView>
</Content>
</Container>
);
const MainView = DrawerNavigator({
DASHBOARD: {
screen: Dashboard,
},
LOGOUT: {
screen: LoginForm,
}
}, {
initialRouteName: 'DASHBOARD',
contentComponent: drawerHeader,
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToogleRoute: 'DrawerToogle'
});
i even set statusbar color in Dashboard screen, still not change.
Dashboard.js
<Container>
<Header androidStatusBarColor="#FFF" style={{backgroundColor:'#000'}}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
<Body>
<Title style={{color:'#FFF'}}>My App</Title>
</Body>
</Header>
<Content>
//content of your app goes here
</Content>
</Container>
I m also using native-base, so i add this code in my App.js file
render() {
return (
<Root style={styles.container}>
<StatusBar
backgroundColor="white"
barStyle="dark-content"
/>
{this.spinerRender()}
</Root>
);
}
这适用于我的登录和登录屏幕,但不适用于我的导航视图屏幕。
登录和登录屏幕状态栏
导航屏幕状态栏
现在修复了。
问题是基于本机的组件,因此我将 contentComponent 视图更改为此。
<SafeAreaView style={{flex: 1}}>
<View style={styles.container}>
<StatusBar backgroundColor={'red'} barStyle={'dark-content'} translucent={false} />
....
</SafeAreaView>
我的问题略有不同。
我导航的前一个屏幕已将 StatusBar
hidden 设置为 true。
// previous screen that I navigated from
<StatusBar hidden animated />
所以我不得不在新屏幕上明确地将 StatusBar
隐藏更改为 false
,将 animated
更改为 true
:
// new screen needs hidden={false} to show up
<StatusBar hidden={false} animated />
对于任何使用 native-base Header
并遇到此问题的人,您可以像下面这样使用道具 androidStatusBarColor
<Header style={styles.header} androidStatusBarColor="#f8bb12">
对于任何使用 native-base Header 并遇到此问题的人,您可以像下面这样使用 iosBarStyle 属性
<Header
iosBarStyle="dark-content"
您可以这样做以排除缺口(如果存在)。
import React from "react";
import {Text, SafeAreaView, StatusBar} from "react-native";
export default function App() {
return (
<React.Fragment>
<StatusBar hidden />
<SafeAreaView>
<Text>Your Code</Text>
</SafeAreaView>
</React.Fragment>
);
}
使用StatusBar with hidden可以排除top notch
React Native 应用中的状态栏颜色
<View>
<StatusBar backgroundColor="red"></StatusBar>
<Text>
hii
<Text>
</View>