I use a DrawerNavigator
from react-navigation in my app. Without any customization, the Android status bar is blue, and not black.
I tried to do
StatusBar.setBackgroundColor('#000000');
but it only works for a few seconds, and then it goes back to blue. It seems that something I am using set the status bar color to blue. However, I tried to remove all dependencies and only keep react-navigation, and it still happens and the docs of react-navigation do not say anything about that.
How can I set the status bar color to black with react-navigation ?
js, import 'StatusBar' from 'react-native'. Then add Following Code in return: return( <View style={{flex: 1}}> (Do not forget to style flex as 1) <StatusBar translucent backgroundColor="rgba(0,0,0,0.2)"/> <Your Code> </View> ); Here, we are setting the status bar color as Black but with 0.2 opacity.
React-Native Navigator is deprecated and has been removed from this package.
I don't think there is any conflict between react-navigation
and the StatusBar
, but I think you should use the <StatusBar>
component rather than the imperative API. There's a high chance this is due to a re-render of your app and it just switch back to the default, with a component declare, you ensure it won't happen.
<StatusBar backgroundColor='blue' barStyle='light-content' />
You can even have multiple ones per route, to change it depending on the path. If you want to change it depending on the user and using redux
, declare it in a connected component and pass the backgroundColor
.
Like Aperçu said no conflict between react-navigation and the StatusBar. Each screen should be able to set properties on the device's status bar, and the container defined in createNavigationContainer should get the options on state change, and apply them natively. try this for StatusBar for entire App.
const AppContent = StackNavigator({
Home: { screen: HomeScreen },
Secondary: { screen: SecondaryScreen },
});
const App = () =>
<View style={{flex: 1}}>
<StatusBar backgroundColor="blue" barStyle="light-content"/>
// style the bar. barStyle is text and icon color od status bar.
<AppContent />
</View>;
import React, {Component} from 'react';
import {Text, TouchableOpacity, View, StatusBar} from 'react-native';
import {StackNavigator} from 'react-navigation';
import Icon from 'react-native-vector-icons/MaterialIcons';
import styles from "../styles/Style";
class ProfileScreen extends Component {
static navigationOptions = ({navigation}) => {
return {
headerLeft: (
<TouchableOpacity onPress={() => {
navigation.navigate('DrawerOpen');
}}>
<Icon name="menu" size={30} color="#fff" style={styles.burgerIcon}/>
</TouchableOpacity>
),
title: 'My Profile',
headerRight: (
<Icon name={'edit'} size={30} color={'#fff'} style={styles.headerRightIcon}/>
),
headerTintColor: "#fff",
headerStyle: {
backgroundColor: '#8BC83D',
height: 56,
elevation: null
}
};
};
render() {
return (
<View style={styles.screenContainer}>
<StatusBar
backgroundColor="#7CB236"
barStyle="light-content"
/>
<Text style={styles.welcome}>
I amsecond reder
</Text>
</View>
);
}
}
const ProfileScreenList = StackNavigator(
{
ProfileScreenIndex: {screen: ProfileScreen},
}
);
export default ProfileScreenList
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With