Android 中的底部选项卡导航中不会显示 React Native 矢量图标
React Native Vector Icons won't show in Bottom Tab Navigation in Android
-
react-native
-
react-native-android
-
react-native-vector-icons
-
react-navigation-bottom-tab
-
react-navigation-v5
图标显示在 screen/page 中,但不会显示在底部导航中。我尝试过的解决方案:
- 按照 github 中的安装指南进行操作,我已经尝试了 GRADLE 和 MANUAL 选项, 但结果相同
- 曾尝试
./gradlew clean
然后 npx react-native run-android
,但结果相同
- 曾尝试
npx react-native link react-native-vector-icons
然后 npx react-native run-android
,但结果相同
屏幕底部导航栏
截图设置画面
它确实出现在 screen/page 中,如上面的屏幕截图所示,但不会显示在底部导航中。
注意: 我已经在模拟器和真实 android 设备上进行了测试,但仍然得到相同的结果!
底部标签的代码
import React from 'react'
import { StyleSheet, Text, View } from 'react-native'
import Ionicons from 'react-native-vector-icons/Ionicons'
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
import ProductNavigation from './ProductNavigation'
import SettingScreen from '../screen/SettingScreen'
const BottomTab = createBottomTabNavigator();
const BottomTabNav = () => {
return (
<BottomTab.Navigator>
<BottomTab.Screen
name="Home"
component={ProductNavigation}
options={{
tabBarLabel: "Home",
tabBarIcon:({color, size}) => {
<Ionicons name="home-outline" color={color} size={size} />
}}} />
<BottomTab.Screen
name="Settings"
component={SettingScreen}
options={{
tabBarLabel: "Settings",
tabBarIcon: ({color, size}) => {
<Ionicons name="settings-outline" color={color} size={size}
/>
}}} />
</BottomTab.Navigator>
)
}
export default BottomTabNav
const styles = StyleSheet.create({})
另外请问为什么底部的tab会跳到下一页??我应该在哪里编辑代码,在此先感谢。下面是截图:
您需要创建一个自定义标签栏组件,并在其中添加图标。 React Navigation 有一个很好的文档 - https://reactnavigation.org/docs/bottom-tab-navigator#tabbar
首先,请确保您正确使用图标。
例如,假设我们使用MaterialCommunityIcons
。
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator
initialRouteName="Home"
tabBarOptions={{
activeTintColor: '#e91e63',
}}
>
<Tab.Screen
name="Home"
component={Home}
options={{
tabBarLabel: 'Home',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="home" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Settings"
component={Settings}
options={{
tabBarLabel: 'Updates',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="settings" color={color} size={size} />
),
tabBarBadge: 3,
}}
/>
Tab.Navigator>
);
}
一般用法是这样的。查看文档了解详细信息。 https://reactnavigation.org/docs/bottom-tab-navigator/
问题其实很简单,你没有return从函数中获取任何东西,
tabBarIcon: ({color, size}) => {
//nothing returned here
<Ionicons name="settings-outline" color={color} size={size}
/>
你必须这样做,要么像下面这样使用括号,要么在你的代码中使用 return 语句。
tabBarIcon: ({color, size}) => (
<Ionicons name="settings-outline" color={color} size={size}
/>)
就我而言,我没有添加
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
到 android/app/build.gradle,如 [Oblador React Native Vector Icons README 文档][1] 中所示
[1]: https://github.com/oblador/react-native-vector-icons#android
添加后,我的图标就会显示出来。
react-native
react-native-android
react-native-vector-icons
react-navigation-bottom-tab
react-navigation-v5
图标显示在 screen/page 中,但不会显示在底部导航中。我尝试过的解决方案:
- 按照 github 中的安装指南进行操作,我已经尝试了 GRADLE 和 MANUAL 选项, 但结果相同
- 曾尝试
./gradlew clean
然后npx react-native run-android
,但结果相同 - 曾尝试
npx react-native link react-native-vector-icons
然后npx react-native run-android
,但结果相同
屏幕底部导航栏
截图设置画面
它确实出现在 screen/page 中,如上面的屏幕截图所示,但不会显示在底部导航中。
注意: 我已经在模拟器和真实 android 设备上进行了测试,但仍然得到相同的结果!
底部标签的代码
import React from 'react'
import { StyleSheet, Text, View } from 'react-native'
import Ionicons from 'react-native-vector-icons/Ionicons'
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
import ProductNavigation from './ProductNavigation'
import SettingScreen from '../screen/SettingScreen'
const BottomTab = createBottomTabNavigator();
const BottomTabNav = () => {
return (
<BottomTab.Navigator>
<BottomTab.Screen
name="Home"
component={ProductNavigation}
options={{
tabBarLabel: "Home",
tabBarIcon:({color, size}) => {
<Ionicons name="home-outline" color={color} size={size} />
}}} />
<BottomTab.Screen
name="Settings"
component={SettingScreen}
options={{
tabBarLabel: "Settings",
tabBarIcon: ({color, size}) => {
<Ionicons name="settings-outline" color={color} size={size}
/>
}}} />
</BottomTab.Navigator>
)
}
export default BottomTabNav
const styles = StyleSheet.create({})
另外请问为什么底部的tab会跳到下一页??我应该在哪里编辑代码,在此先感谢。下面是截图:
您需要创建一个自定义标签栏组件,并在其中添加图标。 React Navigation 有一个很好的文档 - https://reactnavigation.org/docs/bottom-tab-navigator#tabbar
首先,请确保您正确使用图标。
例如,假设我们使用MaterialCommunityIcons
。
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator
initialRouteName="Home"
tabBarOptions={{
activeTintColor: '#e91e63',
}}
>
<Tab.Screen
name="Home"
component={Home}
options={{
tabBarLabel: 'Home',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="home" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Settings"
component={Settings}
options={{
tabBarLabel: 'Updates',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="settings" color={color} size={size} />
),
tabBarBadge: 3,
}}
/>
Tab.Navigator>
);
}
一般用法是这样的。查看文档了解详细信息。 https://reactnavigation.org/docs/bottom-tab-navigator/
问题其实很简单,你没有return从函数中获取任何东西,
tabBarIcon: ({color, size}) => {
//nothing returned here
<Ionicons name="settings-outline" color={color} size={size}
/>
你必须这样做,要么像下面这样使用括号,要么在你的代码中使用 return 语句。
tabBarIcon: ({color, size}) => (
<Ionicons name="settings-outline" color={color} size={size}
/>)
就我而言,我没有添加
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
到 android/app/build.gradle,如 [Oblador React Native Vector Icons README 文档][1] 中所示 [1]: https://github.com/oblador/react-native-vector-icons#android
添加后,我的图标就会显示出来。