底部选项卡导航中的图标颜色未更改

Icon color not changing in bottom tab navigation

活动色调在 React Native 底部选项卡导航器中不起作用。聚焦时名称的颜色确实会改变,但图标颜色不会改变。 这是我的导航器

<Tab.Navigator
      screenOptions={({route}) => ({
        tabBarIcon: ({focused, tintColor, size}) => {
          let iconName;

          if (route.name === 'Home') {
            iconName = focused
              ? 'chatbubble-ellipses-sharp'
              : 'chatbubble-ellipses-outline';
          } else if (route.name === 'Setting') {
            iconName = focused ? 'settings-sharp' : 'settings-outline';
          }

          // You can return any component that you like here!
          return (
            <Icon
              name={iconName}
              size={size}
              color={tintColor}
              type={'Ionicons'}
            />
          );
        },
      })}
      tabBarOptions={{
        activeTintColor: 'tomato',
        inactiveTintColor: 'gray',
      }}>
      <Tab.Screen name="Home" component={Home} />
      <Tab.Screen name="Setting" component={Setting} />
    </Tab.Navigator>
  );
}

即使我像 <Icon name={iconName} size={size} color={'red'} type={'Ionicons'} /> 这样手动输入颜色,它也不起作用。 有帮助吗?

您正在使用 'tintcolor'

但根据 documentation 它应该是颜色

像下面这样更改它,它应该在屏幕级别而不是导航器级别完成。

  <Tab.Screen
    name="Notifications"
    component={Notifications}
    options={{
      tabBarLabel: 'Updates',
      tabBarIcon: ({ focused,color, size }) => {
        const icon=focused?"bell":"home";
        return (
        <MaterialCommunityIcons name={icon} color={color} size={size} />
      )
      },
    }}
  />

你可以像这样简单地传递你需要的颜色

 tabBarOptions={{
    activeTintColor: 'red',
    inactiveTintColor: 'green',
  }}>

您可以在此处查看示例小吃(您必须将图标更改为您使用的图标) https://snack.expo.io/@guruparan/createbottomtabnavigator-|-react-navigation

以及本机基础中图标的颜色 使用如下答案的选项

在 React Navigation 6 中,这些选项现在是屏幕选项。

之前 (v5)

<Tab.Navigator
  tabBarOptions={{
    inactiveTintColor: 'green',
    activeTintColor: 'red',
    style: {
      position: 'absolute',
      borderTopColor: 'rgba(0, 0, 0, .2)',
    },
  }}
>

(v6)

之后
<Tab.Navigator
  screenOptions={{
    tabBarInactiveTintColor: 'green',
    tabBarActiveTintColor: 'red',
    tabBarStyle: {
      position: 'absolute',
      borderTopColor: 'rgba(0, 0, 0, .2)',
    },
  }}
>

然后在您的图标上您可以执行以下操作:

  <BottomTab.Screen
    name="Home"
    component={HomeScreen}
    options={({ navigation }) => ({
      title: "Home",
      tabBarIcon: ({ focused, color }) => (
        <Feather name="home" size={24} color={focused ? "red" : "green"} />
      ),
    })}
  />
 

在此处查看包含更改记录的官方文档:https://reactnavigation.org/blog/2021/08/14/react-navigation-6.0/