代码之家  ›  专栏  ›  技术社区  ›  russjr08

有没有办法用React Native更改Android状态栏的颜色?

  •  46
  • russjr08  · 技术社区  · 9 年前

    我刚开始使用React Native for Android,我想知道是否有办法更改Android的状态栏颜色。。。

    这样地?

    enter image description here

    13 回复  |  直到 3 年前
        1
  •  47
  •   eden    8 年前

    您可以使用React Native Status Bar(详细描述 here ). 您需要做的就是用视图包装导航器,并在其上方添加StatusBar组件。不要忘记从“react native”包导入StatusBar。

    <View>
      <StatusBar
        backgroundColor="blue"
        barStyle="light-content"
      />
      <Navigator
        initialRoute={{statusBarHidden: true}}
        renderScene={(route, navigator) =>
          <View>
            <StatusBar hidden={route.statusBarHidden} />
             ...
          </View>
        }
      />
    </View>
    

    我注意到的一点是,您应该使用 柔性:1 ,如果没有它,你只会看到一个白色的空白屏幕。但RN文件中并未提及。

        2
  •  23
  •   bas    4 年前

    是的,您可以:

    import {StatusBar} from 'react-native';
    
    componentDidMount() {
      StatusBar.setBarStyle( 'light-content',true)
      StatusBar.setBackgroundColor("#0996AE")
    }
    
        3
  •  22
  •   ShadowUC    2 年前

    您可以使用 react-native 内部 StatusBar 作用

    import {StatusBar} from 'react-native';
    
    render() {
      return <View>
         <StatusBar
            backgroundColor="#264d9b"
            barStyle="light-content"
         />
         ... //Your code
       </View>
    }
    

    参考: https://facebook.github.io/react-native/docs/statusbar

        4
  •  6
  •   Nishanth Shankar    9 年前

    我已经制作了一个npm包来控制android中的StatusBar

    https://www.npmjs.com/package/react-native-android-statusbar

    21之前版本的颜色变化不反映

        5
  •  6
  •   kzzzf    9 年前

    目前没有办法从JS中做到这一点。您可以使用自定义主题对其进行自定义。退房 android/src/main/res/values/styles.xml 文件(模板位于此处: https://github.com/facebook/react-native/blob/master/local-cli/generator-android/templates/src/app/src/main/res/values/styles.xml )并在此处阅读更多信息: https://developer.android.com/training/material/theme.html

        6
  •  6
  •   Andrien Pecson    7 年前

    将此代码添加到标头组件

    androidStatusBarColor="#34495e"
    
        7
  •  6
  •   Mojtaba Darzi    5 年前

    添加 颜色.xml 在里面 ..安卓/app/src/main/res/values 以及以下代码

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!--   color for the app bar and other primary UI elements -->
        <color name="colorPrimary">#3F51B5</color>
    
        <!--   a darker variant of the primary color, used for
               the status bar (on Android 5.0+) and contextual app bars -->
        <color name="colorPrimaryDark">#A52D53</color>
    
        <!--   a secondary color for controls like checkboxes and text fields -->
        <color name="colorAccent">#FF4081</color>
    </resources>
    

    复制并打印以下代码 ..安卓/app/src/main/res/values/styles.xml

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
       <!-- Customize your theme here. -->
       <item name="colorPrimary">@color/colorPrimary</item>
       <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
       <item name="colorAccent">@color/colorAccent</item>    
    </style>
    
        8
  •  4
  •   Abiral Subedi    6 年前

    如果您正在使用Expo for React Native,那么这里是设置Android状态栏颜色的解决方案。

    首先,在应用程序中。json文件添加代码:

    {
      "expo": {
        "sdkVersion": "Your given Version",
        "androidStatusBar": {
           "backgroundColor": "#4e2ba1" (Your desirable android Status Bar Color before the app loads)
        }
       }    
    }
    

    然后转到主组件或应用程序。js,从“react native”导入“StatusBar”。然后添加以下代码作为回报:

    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>
    );
    

    这里,我们将状态栏颜色设置为黑色,但不透明度为0.2。您的状态栏颜色将与堆栈导航器的headerStyle背景颜色相同,但稍暗一些。对于标准的Android应用程序,StatusBar颜色是这样设置的。此外,使其半透明,以便您的应用程序在状态栏下绘制,看起来很漂亮。

    它希望这对你来说很好。

        9
  •  3
  •   Nishanth Shankar    9 年前

    目前没有公开的API。这将仅适用于Android 5.0。 在桥接模块上工作以实现相同的功能。将保持您的状态

        10
  •  3
  •   Anmol Saxena    5 年前

    只需将以下代码添加到应用程序。js文件。

        componentDidMount(){
            StatusBar.setBarStyle( 'light-content',true)
            StatusBar.setBackgroundColor("Your color Hex-code here")
        }
    

    并将其添加到导入语句中。

        import {StatusBar} from 'react-native';
    
        11
  •  2
  •   SKG    4 年前

    如果你们正在使用expo,那么只需将其添加到app.json中

    "androidStatusBar": {
      "backgroundColor": "#ffffff",
      "barStyle":"dark-content"
    }
    

    参考: https://docs.expo.io/versions/latest/guides/configuring-statusbar/

        12
  •  1
  •   Dhanuka Perera    4 年前

    使用 背景色 StatusBar组件中的属性

    <StatusBar backgroundColor="#yourColor" />
    

    查看文档更多信息: https://reactnative.dev/docs/statusbar

        13
  •  1
  •   Marvin    3 年前

    您可以使用 react-native-navigation-bar-color 此模块更改NavigationBar,请使用 npm i react-native-navigation-bar-color