[关闭]
@yzzer 2020-05-06T20:01:38.000000Z 字数 2417 阅读 351

React Native 状态栏组件 StatusBar

状态栏 StatusBar 就是手机屏幕最顶上一个区域,包含 运营商名称网络情况电池情况那一条

暗色系

React Native  状态栏  StatusBar

亮色系

React Native  状态栏  StatusBar

在 React Native 中我们可以定制 状态栏 StatusBar 。当然了,说是定制,无非以下几点

  1. 显示或隐藏状态栏。
  2. 设置主题色:亮色系还是暗色系。
  3. 设置显示或隐藏时是否启用动画。

React Native 提供了 `` 组件来做上面这些事情。

引入组件

  1. import { StatusBar } from 'react-native'

使用语法

  1. <StatusBar
  2. barStyle = "dark-content|light-content"
  3. hidden = {true|false}
  4. animated = {true|false}
  5. />

注意

React Native 中的 StatusBar 采用覆盖规则,我们可以在一个页面中定义多个 。 后面定义的 的属性会覆盖前一个 `` 设置的属性。

  1. <View>
  2. <StatusBar backgroundColor="blue" barStyle="light-content" />
  3. <View>
  4. <StatusBar hidden={route.statusBarHidden} />
  5. ...
  6. </View>
  7. </View>

静态方法

除了可以使用属性来设置状态栏外,React Native 中的 StatusBar 还提供了一些静态方法用来设置状态栏。

  1. setHidden()

    setHidden() 用于设置显示或隐藏状态栏。

    setHidden() 的函数原型如下

    1. static setHidden(hidden: boolean, [animation]: StatusBarAnimation)

    参数说明

参数 类型 是否必填 说明
hidden boolean 是否隐藏状态栏,true 是,false
animation StatusBarAnimation 可选,设置显示或隐藏状态改变时的动画。

2. setBarStyle()

setBarStyle() 用于设置状态栏的主题色。

setBarStyle() 的函数原型如下


static setBarStyle(style: StatusBarStyle, [animated]: boolean)

参数说明

参数 类型 是否必填 说明
style StatusBarStyle 要设置的状态栏主题色
animated boolean 主题色改变时是否动画

枚举常量

  1. StatusBarStyle

    StatusBarStyle 枚举常量定义了状态栏可用的主题色.

    值说明

说明
default 默认主题色,iOS 上是 dark-content ,Android 是 light-content
light-content 暗色的背景,亮色的文字和图标
dark-content 亮色的背景,暗色的文字和图标( Android 要求 API >= 23 )

2. StatusBarAnimation

StatusBarAnimation 枚举常量定义了状态栏可用的动画效果。

值说明

说明
none 默认,没有动画效果
fade 渐隐渐现动画效果
slide 渐入渐出动画效果

范例

范例 1

下面的代码,我们设置状态栏 StatusBar 的主题色为 暗色系,同时显示状态栏。

App.js

  1. import React, { Component } from 'react';
  2. import { StatusBar } from 'react-native'
  3. const App = () => {
  4. return (
  5. <StatusBar barStyle = "dark-content" hidden={false} />
  6. )
  7. }
  8. export default App

运行效果如下

React Native  状态栏  StatusBar

范例2

下面的代码,我们使用脚本来控制状态栏的显示和隐藏,使用脚本来控制状态栏的主题色

App.js

  1. import React, { Component } from 'react';
  2. import {View, Text, StatusBar, StyleSheet, TouchableOpacity} from 'react-native'
  3. class App extends Component {
  4. state = {
  5. hidden:false,
  6. barStyle:'default'
  7. }
  8. changeHidden = () =>{
  9. var hidden = this.state.hidden ? false : true;
  10. this.setState({ hidden: hidden })
  11. }
  12. changeBarStyle = () =>{
  13. var barStyle = this.state.barStyle == 'light-content' ? 'dark-content' : 'light-content';
  14. this.setState({ barStyle: barStyle })
  15. }
  16. render() {
  17. return (
  18. <View>
  19. <StatusBar barStyle = {this.state.barStyle} hidden={this.state.hidden} />
  20. <TouchableOpacity style={styles.button} onPress = {this.changeHidden}>
  21. <Text>显示或隐藏</Text>
  22. </TouchableOpacity>
  23. <TouchableOpacity style={styles.button} onPress = {this.changeBarStyle}>
  24. <Text>改变主题色</Text>
  25. </TouchableOpacity>
  26. </View>
  27. )
  28. }
  29. }
  30. export default App
  31. const styles = StyleSheet.create ({
  32. button: {
  33. backgroundColor: '#4ba37b',
  34. width: 100,
  35. borderRadius: 50,
  36. alignItems: 'center',
  37. marginTop: 100
  38. }
  39. })

演示效果如下

大家知道为什么隐藏的时候有一条黑色的条吗?

那是因为的实体机是全屏手机,顶部的中央有一个 摄像头

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注