Как изменить цвет активной / выбранной вкладки?
Я не мог найти способ изменить цвет заголовка в панели вкладок. Это мой код:
Home:{
screen: TabNavigator({
Home: {
screen: HomeScreen,
navigationOptions: ({ navigation }) => ({
title: 'Home',
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-home' : 'ios-home-outline'}
size={26}
style={{ color: focused ? `${tabBarColor}` : tintColor}}
/>
),
//headerStyle: {backgroundColor: "#553A91"},
//headerTitleStyle: {color: "#FFFFFF"},
header: null,
}),
},
Profile: {
screen: ProfileScreen,
navigationOptions: ({ navigation }) => ({
title: 'Profile',
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-people' : 'ios-people-outline'}
size={26}
style={{ color: focused ? `${tabBarColor}` : tintColor }}
/>
),
//headerStyle: {backgroundColor: "#553A91"},
//headerTitleStyle: {color: "#FFFFFF"},
header: null,
}),
},
}),
}
Я искал, но не мог найти способ сделать это. Я хочу, чтобы этот цвет был серым по умолчанию, когда вкладка не выбрана, а будет моей tabBarColor
цвет, когда вкладка выбрана.
Как я могу это сделать?
Заранее спасибо!
1 ответ
Решение
Не уверен, где вы искали, но мне потребовалось 30 секунд, чтобы увидеть это.
В TabNavigator Docs ясно, что вам нужно использовать activeTintColor
activeTintColor
: цвет метки и значка активной вкладки
Пример:
const MyApp = TabNavigator({
Home: {
screen: MyHomeScreen,
},
Notifications: {
screen: MyNotificationsScreen,
},
}, {
navigationOptions: ({navigation}) => ({
tabBarIcon: ({focused}) => {
...
}
}),
tabBarOptions: {
activeTintColor: '#ffffff',
},
});
- Определить переменный маршрут,
- Добавьте слушателей props к каждому
, - Используйте переменный маршрут для изменения цвета tabBarLabel.
Пример:
const [route, setRoute] = useState('home');
<Tab.Navigator>
<Tab.Screen listeners={{
tabPress: (e) => {
setRoute('home');
},
}}
options={{
tabBarLabel: (
<Text
style={{
color: route === 'home' ? 'ACTIVE_COLOR' : 'INACTIVE_COLOR',
}}>
home
</Text>
) />
<Tab.Screen listeners={{
tabPress: (e) => {
setRoute('profile');
},
}}
options={{
tabBarLabel: (
<Text
style={{
color: route === 'profile' ? 'ACTIVE_COLOR' : 'INACTIVE_COLOR',
}}>
profile
</Text>
) />
</Tab.Navigator>
Надеюсь, я смог тебе помочь