react-native - 如何动态更改本机 BottomTabNavigator 颜色
问题描述
我想通过更改应用屏幕内的道具或状态来更改底部标签栏的颜色
如果我们可以通过 redux store 会更好
这是我的标签导航
import {createBottomTabNavigator} from 'react-navigation-tabs';
import NotificationStack from './NotificationStack';
import SettingStack from './SettingStack';
const SupervisorTab = createBottomTabNavigator(
{
NotificationStack,
SettingStack,
},
{
resetOnBlur: true,
tabBarOptions: {
keyboardHidesTabBar: true,
activeTintColor: '#F26D21',
style: {
borderWidth: 0,
backgroundColor: '#000000', //need change this color code as per prop
borderTopColor: '#000000',
},
},
initialRouteName: 'SupervisorStack',
navigationOptions: ({navigation}) => ({
header: null,
}),
},
);
export default SupervisorTab;
解决方案
您需要通过 defaultNavigationOptions 函数将其设置为默认值
import {createBottomTabNavigator} from 'react-navigation-tabs';
import NotificationStack from './NotificationStack';
import SettingStack from './SettingStack';
const SupervisorTab = createBottomTabNavigator(
{
NotificationStack,
SettingStack,
},
{
defaultNavigationOptions: ({ navigation, screenProps }) => {
const mycolor = screenProps['mycolor'] || '#000000';
return {
tabBarOptions: {
keyboardHidesTabBar: true,
activeTintColor: '#F26D21',
style: {
borderWidth: 0,
backgroundColor: mycolor, //need change this color code as per prop
borderTopColor: '#000000',
},
},
}
},
resetOnBlur: true,
initialRouteName: 'SupervisorStack',
navigationOptions: ({navigation}) => ({
header: null,
}),
},
);
export default SupervisorTab;
然后你用它
<SupervisorTab screenProps={{mycolor:this.state.mycolor}} />
推荐阅读
- php - 在使用 Php 之间使用冒号 (:) 访问变量的 Json 值
- uwp - 在 C++/WinRT 项目中使用 CoreDispatcher::RunAsync 时获取“在定义之前无法使用返回‘auto’的函数”
- php - PHP将此时间戳转换为纪元/unix时间(int)
- c - 通过调用无意返回的函数来退出 switch 语句是一种好的编码习惯吗
- mysql - 触发器检查两个表上的多个值是否相等,然后更新表
- c# - 如何在 xamarin 表单中创建具有两种布局的页面
- c++ - 在 C++ 中使用取决于函数的大小初始化数组
- sql - 将数据从一个表迁移到另一个表
- java - 信件计数应用程序
- mongodb - 使用 mongodb 和 kafka 消费者的并发更新问题