В нижней панели вкладок не отображаются значки - PullRequest
0 голосов
/ 27 февраля 2019

Я использую реагирующую навигацию для обработки всей навигации и отображения вкладок внутри моего приложения.Я использую createStackNavigator, createAppContainer и createBottomTabNavigator для создания нижней панели вкладок.

Ярлыки отображаются, и все выглядит нормально, но почему-то я не могу отобразить значки в нижней панели вкладок.Я пробовал разные подходы, но ни один из них не работает. Я также пробовал без свойства focus, и showIcon имеет значение true.

Вот мой маршрутизатор:

const Router = createStackNavigator(
   /* App screens */
  {
    Landing: {
      screen: LandingScreen, navigationOptions: { gesturesEnabled: false, header: null }
    },
    Login: {
      screen: LoginScreen, navigationOptions: { gesturesEnabled: false, header: null }
    },
    AddCertficate: {
      screen: AddCertficate, navigationOptions: { header: null }
    },
    AddCertificateDetails: {
      screen: AddCertificateDetails, navigationOptions: { header: null }
    },
    AddCertificatePhoto: {
      screen: AddCertificatePhoto, navigationOptions: { header: null }
    },
    CertificateDetails: {
      screen: CertificateDetailsTab, navigationOptions: { header: null }
    },
    AddCertificateConfirmed: {
      screen: AddCertificateConfirmed, navigationOptions: { header: null }
    },
    AddCertificateSubmitted: {
      screen: AddCertificateSubmitted, navigationOptions: { header: null }
    },
    /* Components for bottom tab navigation bar */
    Tab: {
      screen: createBottomTabNavigator(
        {
          Certificates: {
            screen: Certificates,
          },
          Courses: {
            screen: Courses
          },
          Schedule: {
            screen: Schedule
          },
          Profile: {
            screen: Profile
          },
        },
        {
          navigationOptions: ({ navigation }) => ({
          /* Logic for switching between screens in bottom tab bar is bellow */
          tabBarIcon: ({ focused }) => {
            const { routeName } = navigation.state;
            let icon;
            console.log('route name', routeName);
            switch (routeName) {
              case 'Tab':
                icon = focused ?
                  require('../assets/img/certificates_tab.png') :
                  require('../assets/img/landing_logo.png');
                return <Image source={icon} style={{ width: 22, height: 20 }} />;
              case 'Courses':
                icon = focused ?
                require('../assets/img/courses_tab.png') :
                require('../assets/img/landing_logo.png');
                return <Image source={icon} style={{ width: 22, height: 23 }} />;
              case 'Schedule':
                icon = focused ?
                require('../assets/img/schedule_tab.png') :
                require('../assets/img/landing_logo.png');
                return <Image source={icon} style={{ width: 35, height: 35 }} />;
              case 'Profile':
                icon = focused ?
                require('../assets/img/profile_tab.png') :
                require('../assets/img/landing_logo.png');
                return (
                  <Image source={icon} style={{ width: 23, height: 23 }} />
                );
              default:
                break;
            }
          },
        }),
       /* Bottom tab bar config is bellow */
          tabBarOptions: {
            showIcon: true,
            showLabel: true,
            indicatorStyle: { backgroundColor: 'black' },
            style: {
              backgroundColor: 'white',
              fontFamily: FONT_AVENIR_MEDIUM,
              fontSize: 18,
              textAlign: 'center',
            },
            iconStyle: {
              width: 47,
              height: 47,
            }
          },
          tabBarPosition: 'bottom',
          swipeEnabled: false,
          animationEnabled: false,
        }
      )
    }
  },
  {
    initialRouteName: 'Landing',
       /* The header config for Cerficiate tab screen */
       defaultNavigationOptions: {
        headerStyle: {
          backgroundColor: COLOR_PRIMARY_BLUE,
          shadowColor: 'transparent',
          elevation: 0,
        },
        headerTintColor: COLOR_PRIMARY_WHITE,
        headerTitleStyle: {
          color: '#333333',
          fontFamily: FONT_AVENIR_MEDIUM,
          fontSize: 18,
          opacity: 0.9,
          shadowColor: 'transparent',
          elevation: 0
        },
      },
    }
);

export default createAppContainer(Router);

1 Ответ

0 голосов
/ 27 февраля 2019

Решено!Вместо navigationOptions я использовал defaultNavigationOptions, и теперь он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...