You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中如何修改导航栏颜色?Android底部系统导航栏在官方文档中的称谓是什么?

在React Native中修改导航栏颜色及Android底部系统导航栏的官方称谓

嘿,这两个问题我刚好有经验,来给你详细解答下:

一、如何修改React Native中的导航栏颜色

这里要分两种常见的“导航栏”场景,你可以根据自己的需求对应操作:

1. 修改React Navigation的顶部导航栏颜色

如果你用的是React Navigation(目前React Native生态里最主流的导航库),以v6版本为例,全局或者单个页面的导航栏颜色都可以通过配置screenOptions来实现:

全局设置(所有页面生效)

import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

function MyStack() {
  return (
    <Stack.Navigator
      screenOptions={{
        headerStyle: {
          backgroundColor: '#2196F3', // 替换成你想要的导航栏背景色
        },
        headerTintColor: '#fff', // 导航栏文字、图标的颜色,这里设为浅色适配深色背景
      }}
    >
      <Stack.Screen name="Home" component={HomeScreen} />
      <Stack.Screen name="Profile" component={ProfileScreen} />
    </Stack.Navigator>
  );
}

单个页面单独设置

如果只想给某一个页面的导航栏换颜色,直接在对应Screen的options里配置即可:

<Stack.Screen
  name="Settings"
  component={SettingsScreen}
  options={{
    headerStyle: { backgroundColor: '#f4511e' },
    headerTintColor: '#fff',
  }}
/>

2. 修改Android系统级的导航栏(顶部状态栏+底部系统导航栏)

如果要改的是Android系统自带的顶部状态栏,或者你之前问的底部系统导航栏,操作方式如下:

顶部状态栏(React Native内置支持)

直接用React Native提供的StatusBar组件就能动态设置:

import { StatusBar, useEffect } from 'react-native';

function HomeScreen() {
  useEffect(() => {
    // 设置状态栏背景色
    StatusBar.setBackgroundColor('#2196F3');
    // 设置状态栏文字为浅色(适配深色背景),可选'default'(深色)或'light-content'(浅色)
    StatusBar.setBarStyle('light-content');
  }, []);

  return (
    {/* 你的页面内容 */}
  );
}

底部系统导航栏(需要原生配置或自定义模块)

React Native没有内置直接修改底部系统导航栏的API,有两种常用方案:

  • 方案一:Android原生静态配置
    打开android/app/src/main/res/values/styles.xml,修改AppTheme的配置:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <!-- 设置底部导航栏背景色 -->
      <item name="android:navigationBarColor">#2196F3</item>
      <!-- 设置导航栏图标颜色:false为浅色,true为深色 -->
      <item name="android:windowLightNavigationBar">false</item>
    </style>
    

    这种方式是全局生效的,打包后就固定了。

  • 方案二:React Native动态修改
    如果你需要在运行时动态切换颜色,可以自己写个简单的原生模块,然后在RN端调用:
    首先在Android原生端创建一个模块(Java代码):

    package com.your_app_package_name;
    
    import com.facebook.react.bridge.ReactApplicationContext;
    import com.facebook.react.bridge.ReactContextBaseJavaModule;
    import com.facebook.react.bridge.ReactMethod;
    import android.view.Window;
    import android.graphics.Color;
    
    public class NavigationBarModule extends ReactContextBaseJavaModule {
      public NavigationBarModule(ReactApplicationContext reactContext) {
        super(reactContext);
      }
    
      @Override
      public String getName() {
        return "NavigationBarModule"; // 模块名称,RN端会用到
      }
    
      @ReactMethod
      public void setNavigationBarColor(String colorHex) {
        Window window = getCurrentActivity().getWindow();
        if (window != null) {
          window.setNavigationBarColor(Color.parseColor(colorHex));
        }
      }
    }
    

    然后在RN端调用这个模块:

    import { NativeModules } from 'react-native';
    
    const { NavigationBarModule } = NativeModules;
    
    // 调用方法设置颜色,比如设置为红色
    NavigationBarModule.setNavigationBarColor('#ff0000');
    

二、Android底部导航栏的官方称谓

你提到的这个Android设备底部的导航栏,Google官方的标准称谓是System Navigation Bar(系统导航栏)。它就是包含返回、主页、最近任务按钮(手势导航模式下可能只显示一条横线)的那个栏,不受应用主题完全控制(部分系统可以自定义)。

之前你搜navigation bar没找到相关内容,主要是因为很多React Native的文档会把React Navigation的顶部导航栏也称为navigation bar,导致关键词混淆。加上System关键词搜索,就能精准找到Android官方文档里的对应内容啦。

内容的提问来源于stack exchange,提问作者piguycs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:27:32