79 KiB
id, title, original_id
| id | title | original_id |
|---|---|---|
| version-0.34-statusbar | statusbar | statusbar |
StatusBar #
Component to control the app status bar.
Usage with Navigator #
It is possible to have multiple StatusBar components mounted at the same
time. The props will be merged in the order the StatusBar components were
mounted. One use case is to specify status bar styles per route using Navigator.
Imperative API #
For cases where using a component is not ideal, there is also an imperative API exposed as static functions on the component. It is however not recommended to use the static API and the component for the same prop because any value set by the static API will get overriden by the one set by the component in the next render.
Props #
animated bool #
If the transition between status bar property changes should be animated. Supported for backgroundColor, barStyle and hidden.
hidden bool #
If the status bar is hidden.
androidtranslucent bool #
If the status bar is translucent. When translucent is set to true, the app will draw under the status bar. This is useful when using a semi transparent status bar color.
iosbarStyle enum('default', 'light-content') #
Sets the color of the status bar text.
iosnetworkActivityIndicatorVisible bool #
If the network activity indicator should be visible.
iosshowHideTransition enum('fade', 'slide') #
The transition effect when showing and hiding the status bar using the hidden
prop. Defaults to 'fade'.
Methods #
static setHidden(hidden, animation?) #
Show or hide the status bar
| Name and Type | Description |
|---|---|
| hidden boolean | The dialog's title. |
| [animation] | Optional animation when changing the status bar hidden property. |
static setBarStyle(style, animated?) #
Set the status bar style
| Name and Type | Description |
|---|---|
| style | Status bar style to set |
| [animated] boolean | Animate the style change. |
static setNetworkActivityIndicatorVisible(visible) #
Control the visibility of the network activity indicator
| Name and Type | Description |
|---|---|
| visible boolean | Show the indicator. |
static setBackgroundColor(color, animated?) #
Set the background color for the status bar
| Name and Type | Description |
|---|---|
| color string | Background color. |
| [animated] boolean | Animate the style change. |
static setTranslucent(translucent) #
Control the translucency of the status bar
| Name and Type | Description |
|---|---|
| translucent boolean | Set as translucent. |
Type Definitions #
You can edit the content above on GitHub and send us a pull request!
Examples # | Edit on GitHub |
const React = require('react'); const ReactNative = require('react-native'); const { StatusBar, StyleSheet, Text, TouchableHighlight, View, } = ReactNative;
exports.framework = 'React'; exports.title = '<StatusBar>'; exports.description = 'Component for controlling the status bar';
const colors = [ '#ff0000', '#00ff00', '#0000ff', ];
const barStyles = [ 'default', 'light-content', ];
const showHideTransitions = [ 'fade', 'slide', ];
function getValue<T>(values: Array<T>, index: number): T { return values[index % values.length]; }
class StatusBarHiddenExample extends React.Component { state = { animated: true, hidden: false, showHideTransition: getValue(showHideTransitions, 0), };
_showHideTransitionIndex = 0;
_onChangeAnimated = () => { this.setState({animated: !this.state.animated}); };
_onChangeHidden = () => { this.setState({hidden: !this.state.hidden}); };
_onChangeTransition = () => { this._showHideTransitionIndex++; this.setState({ showHideTransition: getValue(showHideTransitions, this._showHideTransitionIndex), }); };
render() { return ( <View> <StatusBar hidden={this.state.hidden} showHideTransition={this.state.showHideTransition} animated={this.state.animated} /> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeHidden}> <View style={styles.button}> <Text>hidden: {this.state.hidden ? 'true' : 'false'}</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeAnimated}> <View style={styles.button}> <Text>animated (ios only): {this.state.animated ? 'true' : 'false'}</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeTransition}> <View style={styles.button}> <Text> showHideTransition (ios only): '{getValue(showHideTransitions, this._showHideTransitionIndex)}' </Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarStyleExample extends React.Component { _barStyleIndex = 0;
_onChangeBarStyle = () => { this._barStyleIndex++; this.setState({barStyle: getValue(barStyles, this._barStyleIndex)}); };
_onChangeAnimated = () => { this.setState({animated: !this.state.animated}); };
state = { animated: true, barStyle: getValue(barStyles, this._barStyleIndex), };
render() { return ( <View> <StatusBar animated={this.state.animated} barStyle={this.state.barStyle} /> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeBarStyle}> <View style={styles.button}> <Text>style: '{getValue(barStyles, this._barStyleIndex)}'</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeAnimated}> <View style={styles.button}> <Text>animated: {this.state.animated ? 'true' : 'false'}</Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarNetworkActivityExample extends React.Component { state = { networkActivityIndicatorVisible: false, };
_onChangeNetworkIndicatorVisible = () => { this.setState({ networkActivityIndicatorVisible: !this.state.networkActivityIndicatorVisible, }); };
render() { return ( <View> <StatusBar networkActivityIndicatorVisible={this.state.networkActivityIndicatorVisible} /> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeNetworkIndicatorVisible}> <View style={styles.button}> <Text> networkActivityIndicatorVisible: {this.state.networkActivityIndicatorVisible ? 'true' : 'false'} </Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarBackgroundColorExample extends React.Component { state = { animated: true, backgroundColor: getValue(colors, 0), };
_colorIndex = 0;
_onChangeBackgroundColor = () => { this._colorIndex++; this.setState({backgroundColor: getValue(colors, this._colorIndex)}); };
_onChangeAnimated = () => { this.setState({animated: !this.state.animated}); };
render() { return ( <View> <StatusBar backgroundColor={this.state.backgroundColor} animated={this.state.animated} /> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeBackgroundColor}> <View style={styles.button}> <Text>backgroundColor: '{getValue(colors, this._colorIndex)}'</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeAnimated}> <View style={styles.button}> <Text>animated: {this.state.animated ? 'true' : 'false'}</Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarTranslucentExample extends React.Component { state = { translucent: false, };
_onChangeTranslucent = () => { this.setState({ translucent: !this.state.translucent, }); };
render() { return ( <View> <StatusBar translucent={this.state.translucent} /> <TouchableHighlight style={styles.wrapper} onPress={this._onChangeTranslucent}> <View style={styles.button}> <Text>translucent: {this.state.translucent ? 'true' : 'false'}</Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarStaticIOSExample extends React.Component { render() { return ( <View> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setHidden(true, 'slide'); }}> <View style={styles.button}> <Text>setHidden(true, 'slide')</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setHidden(false, 'fade'); }}> <View style={styles.button}> <Text>setHidden(false, 'fade')</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setBarStyle('default', true); }}> <View style={styles.button}> <Text>setBarStyle('default', true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setBarStyle('light-content', true); }}> <View style={styles.button}> <Text>setBarStyle('light-content', true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setNetworkActivityIndicatorVisible(true); }}> <View style={styles.button}> <Text>setNetworkActivityIndicatorVisible(true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setNetworkActivityIndicatorVisible(false); }}> <View style={styles.button}> <Text>setNetworkActivityIndicatorVisible(false)</Text> </View> </TouchableHighlight> </View> ); } }
class StatusBarStaticAndroidExample extends React.Component { render() { return ( <View> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setHidden(true); }}> <View style={styles.button}> <Text>setHidden(true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setHidden(false); }}> <View style={styles.button}> <Text>setHidden(false)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setBackgroundColor('#ff00ff', true); }}> <View style={styles.button}> <Text>setBackgroundColor('#ff00ff', true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setBackgroundColor('#00ff00', true); }}> <View style={styles.button}> <Text>setBackgroundColor('#00ff00', true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setTranslucent(true); StatusBar.setBackgroundColor('rgba(0, 0, 0, 0.4)', true); }}> <View style={styles.button}> <Text>setTranslucent(true) and setBackgroundColor('rgba(0, 0, 0, 0.4)', true)</Text> </View> </TouchableHighlight> <TouchableHighlight style={styles.wrapper} onPress={() => { StatusBar.setTranslucent(false); StatusBar.setBackgroundColor('black', true); }}> <View style={styles.button}> <Text>setTranslucent(false) and setBackgroundColor('black', true)</Text> </View> </TouchableHighlight> </View> ); } }
const examples = [{ title: 'StatusBar hidden', render() { return <StatusBarHiddenExample />; }, }, { title: 'StatusBar style', render() { return <StatusBarStyleExample />; }, platform: 'ios', }, { title: 'StatusBar network activity indicator', render() { return <StatusBarNetworkActivityExample />; }, platform: 'ios', }, { title: 'StatusBar background color', render() { return <StatusBarBackgroundColorExample />; }, platform: 'android', }, { title: 'StatusBar background color', render() { return <StatusBarTranslucentExample />; }, platform: 'android', }, { title: 'StatusBar static API', render() { return <StatusBarStaticIOSExample />; }, platform: 'ios', }, { title: 'StatusBar static API', render() { return <StatusBarStaticAndroidExample />; }, platform: 'android', }, { title: 'StatusBar dimensions', render() { return ( <View> <Text>Height: {StatusBar.currentHeight} pts</Text> </View> ); }, platform: 'android', }];
exports.examples = examples;
var styles = StyleSheet.create({ wrapper: { borderRadius: 5, marginBottom: 5, }, button: { borderRadius: 5, backgroundColor: '#eeeeee', padding: 10, }, title: { marginTop: 16, marginBottom: 8, fontWeight: 'bold', } });
