123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import React from 'react';
- import { Image } from 'react-native';
- import { NavigationContainer } from '@react-navigation/native';
- import { createNativeStackNavigator } from '@react-navigation/native-stack';
- import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
- // 页面组件
- import LoginScreen from './src/pages/Login';
- import TeamScreen from './src/pages/Team';
- import DataScreen from './src/pages/Data';
- import PlayScreen from './src/pages/Play';
- import MatchScreen from './src/pages/Match';
- import MeScreen from './src/pages/Me';
- // 导入自定义图片(请替换为你的实际图片路径)
- import TeamIcon from './src/static/images/common/team.png';
- import TeamIconActive from './src/static/images/common/team_active.png';
- import DataIcon from './src/static/images/common/data.png';
- import DataIconActive from './src/static/images/common/data_active.png';
- import PlayIcon from './src/static/images/common/play.png';
- import PlayIconActive from './src/static/images/common/play_active.png';
- import MatchIcon from './src/static/images/common/match.png';
- import MatchIconActive from './src/static/images/common/match_active.png';
- import MeIcon from './src/static/images/common/me.png';
- import MeIconActive from './src/static/images/common/me_active.png';
- const Stack = createNativeStackNavigator();
- const Tab = createBottomTabNavigator();
- // 定义底部Tab导航
- function TabNavigator() {
- return (
- <Tab.Navigator
- initialRouteName="Team" // 设置默认显示Team页签
- screenOptions={({ route }) => ({
- tabBarIcon: ({ focused }) => {
- if (route.name === 'Team') {
- return (
- <Image
- source={focused ? TeamIconActive : TeamIcon}
- style={{ width: 24, height: 24 }}
- resizeMode="contain"
- />
- );
- } else if (route.name === 'Data') {
- return (
- <Image
- source={focused ? DataIconActive : DataIcon}
- style={{ width: 24, height: 24 }}
- resizeMode="contain"
- />
- );
- } else if (route.name === 'Play') {
- return (
- <Image
- source={focused ? PlayIconActive : PlayIcon}
- style={{ width: 24, height: 24 }}
- resizeMode="contain"
- />
- );
- } else if (route.name === 'Match') {
- return (
- <Image
- source={focused ? MatchIconActive : MatchIcon}
- style={{ width: 24, height: 24 }}
- resizeMode="contain"
- />
- );
- } else if (route.name === 'Me') {
- return (
- <Image
- source={focused ? MeIconActive : MeIcon}
- style={{ width: 24, height: 24 }}
- resizeMode="contain"
- />
- );
- }
- return null;
- },
- tabBarActiveTintColor: '#007AFF',
- tabBarInactiveTintColor: '#999',
- headerShown: false,
- tabBarStyle: {
- height: 58,
- paddingBottom: 8,
- paddingTop: 8,
- backgroundColor: '#fff',
- borderTopWidth: 0,
- elevation: 5,
- shadowColor: '#000',
- shadowOffset: { width: 0, height: -2 },
- shadowOpacity: 0.05,
- shadowRadius: 5,
- },
- })}
- >
- <Tab.Screen name="Team" component={TeamScreen} options={{ title: '球队' }} />
- <Tab.Screen name="Data" component={DataScreen} options={{ title: '数据' }} />
- <Tab.Screen name="Play" component={PlayScreen} options={{ title: 'PLAY' }} />
- <Tab.Screen name="Match" component={MatchScreen} options={{ title: '赛事' }} />
- <Tab.Screen name="Me" component={MeScreen} options={{ title: '我的' }} />
- </Tab.Navigator>
- );
- }
- function App(): React.JSX.Element {
- return (
- <NavigationContainer>
- <Stack.Navigator initialRouteName="Login">
- <Stack.Screen
- name="MainTabs"
- component={TabNavigator}
- options={{
- headerBackVisible: false,
- headerShown: false,
- }}
- />
- <Stack.Screen
- name="Login"
- component={LoginScreen}
- options={{
- headerBackVisible: false,
- headerShown: false,
- }}
- />
- </Stack.Navigator>
- </NavigationContainer>
- );
- }
- export default App;
|