'React Native CLI hide status bar in landscape mode
I have a problem, how can I hide a status bar in landscape mode? In portrait mode its works.
I'm hiding the status bar by either:
<StatusBar hidden={true} />
or
StatusBar.setHidden(true);
But when I call my modal screen to show fullscreen mode that statusbar comes back. Why or how can I fix that?
"react": "17.0.2",
"react-native": "0.67.4",
Solution 1:[1]
Please find the below code:
import React, { useState } from 'react';
import { Button, Platform, SafeAreaView, StatusBar, StyleSheet, Text, View } from 'react-native';
const STYLES = ['default', 'dark-content', 'light-content'];
const TRANSITIONS = ['fade', 'slide', 'none'];
const App = () => {
const [hidden, setHidden] = useState(false);
const [statusBarStyle, setStatusBarStyle] = useState(STYLES[0]);
const [statusBarTransition, setStatusBarTransition] = useState(TRANSITIONS[0]);
const changeStatusBarVisibility = () => setHidden(!hidden);
const changeStatusBarStyle = () => {
const styleId = STYLES.indexOf(statusBarStyle) + 1;
if (styleId === STYLES.length) {
setStatusBarStyle(STYLES[0]);
} else {
setStatusBarStyle(STYLES[styleId]);
}
};
const changeStatusBarTransition = () => {
const transition = TRANSITIONS.indexOf(statusBarTransition) + 1;
if (transition === TRANSITIONS.length) {
setStatusBarTransition(TRANSITIONS[0]);
} else {
setStatusBarTransition(TRANSITIONS[transition]);
}
};
return (
<SafeAreaView style={styles.container}>
<StatusBar
animated={true}
backgroundColor="#61dafb"
barStyle={statusBarStyle}
showHideTransition={statusBarTransition}
hidden={hidden} />
<Text style={styles.textStyle}>
StatusBar Visibility:{'\n'}
{hidden ? 'Hidden' : 'Visible'}
</Text>
<Text style={styles.textStyle}>
StatusBar Style:{'\n'}
{statusBarStyle}
</Text>
{Platform.OS === 'ios' ? (
<Text style={styles.textStyle}>
StatusBar Transition:{'\n'}
{statusBarTransition}
</Text>
) : null}
<View style={styles.buttonsContainer}>
<Button
title="Toggle StatusBar"
onPress={changeStatusBarVisibility} />
<Button
title="Change StatusBar Style"
onPress={changeStatusBarStyle} />
{Platform.OS === 'ios' ? (
<Button
title="Change StatusBar Transition"
onPress={changeStatusBarTransition} />
) : null}
</View>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#ECF0F1'
},
buttonsContainer: {
padding: 10
},
textStyle: {
textAlign: 'center',
marginBottom: 8
}
});
export default App;
Hope it will help you!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Nensi Kasundra |