Ben*_*ins 5 react-native react-navigation
我有这个反应导航抽屉:
我想像标签一样将活动图标涂成绿色。
我正在使用 react-native-vector-icons 作为图标。
代码:
const AddMenuIcon = ({ navigate }) => (
<View>
<Icon
name="plus"
size={30}
color="#FFF"
onPress={() => navigate('DrawerOpen')}
/>
</View>
)
const SearchMenuIcon = ({ navigate }) => (
<Icon
name="search"
size={30}
color="#FFF"
onPress={() => navigate('DrawerOpen')}
/>
)
const LoginMenuIcon = ({ navigate }) => (
<Icon
name="user"
size={30}
style={{ fontWeight: '900' }}
color="#FFF"
onPress={() => navigate('DrawerOpen')}
/>
)
const Stack = {
Login: {
screen: Login,
headerMode: 'none'
},
Search: {
screen: Search,
headerMode: 'none'
},
Add: {
screen: Add,
headerMode: 'none'
}
}
const DrawerRoutes = {
Login: {
name: 'Login',
screen: StackNavigator(Stack.Login, {
headerMode: 'none'
}),
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
drawerIcon: LoginMenuIcon(navigation)
})
},
'Search Vegan': {
name: 'Search',
screen: StackNavigator(Stack.Search, {
headerMode: 'none'
}),
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
drawerIcon: SearchMenuIcon(navigation)
})
},
'Add vegan': {
name: 'Add',
screen: StackNavigator(Stack.Add, {
headerMode: 'none'
}),
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
drawerIcon: AddMenuIcon(navigation)
})
}
}
const CustomDrawerContentComponent = props => (
<SafeAreaView style={{ flex: 1, backgroundColor: '#3f3f3f', color: 'white' }}>
<DrawerItems {...props} />
</SafeAreaView>
)
const RootNavigator = StackNavigator(
{
Drawer: {
name: 'Drawer',
screen: DrawerNavigator(DrawerRoutes, {
initialRouteName: 'Login',
drawerPosition: 'left',
contentComponent: CustomDrawerContentComponent,
contentOptions: {
activeTintColor: '#27a562',
inactiveTintColor: 'white',
activeBackgroundColor: '#3a3a3a',
}
}),
headerMode: 'none',
initialRouteName: 'Login'
},
initialRouteName: 'Login'
},
{
headerMode: 'none',
initialRouteName: 'Drawer'
}
)
export default RootNavigator
Run Code Online (Sandbox Code Playgroud)
如果使用 react-native-vector-icons,有没有办法将活动图标的颜色与活动文本相同?activeTintColor对图标不起作用。我们可以以编程方式检查是否处于活动状态吗?另一个奇怪的事情是 rgba 颜色不起作用,CustomDrawerContentComponent所以我不能使背景半透明,这很烦人。如果你也能在那里提供帮助,那就加分吧!
您可以动态地将tintColor道具传递给您的图标组件,该组件会自动解析为活动或非活动的色调颜色:
drawerIcon: ({tintColor}) => <MaterialIcons name="home" size={20} color={tintColor} />,
Run Code Online (Sandbox Code Playgroud)
此外,默认情况下,非活动图标容器似乎带有一些透明度,因此您可能希望将 设置opacity为 1:
<DrawerItems iconContainerStyle={{opacity: 1}} ... />
Run Code Online (Sandbox Code Playgroud)
小智 6
在反应导航版本:5.x
使用颜色而不是 tintColor 提供自定义抽屉内容
<Drawer.Screen name="settingscreen" component={Settings}
options={{
drawerLabel: "Settings",
drawerIcon: ({ color }) => <MaterialCommunityIcons name="settings" size={24} style={[styles.icon, { color: color }]} />
}}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4559 次 |
| 最近记录: |