You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
import React from 'react'; |
|
import FontAwesome from '@expo/vector-icons/FontAwesome'; |
|
import { Link, Tabs } from 'expo-router'; |
|
import { Pressable } from 'react-native'; |
|
|
|
import Colors from '@/constants/Colors'; |
|
import { useColorScheme } from '@/components/useColorScheme'; |
|
import { useClientOnlyValue } from '@/components/useClientOnlyValue'; |
|
|
|
// You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/ |
|
function TabBarIcon(props: { |
|
name: React.ComponentProps<typeof FontAwesome>['name']; |
|
color: string; |
|
}) { |
|
return <FontAwesome size={28} style={{ marginBottom: -3 }} {...props} />; |
|
} |
|
|
|
export default function TabLayout() { |
|
const colorScheme = useColorScheme(); |
|
|
|
return ( |
|
<Tabs |
|
screenOptions={{ |
|
tabBarActiveTintColor: Colors[colorScheme ?? 'light'].tint, |
|
// Disable the static render of the header on web |
|
// to prevent a hydration error in React Navigation v6. |
|
headerShown: useClientOnlyValue(false, true), |
|
}}> |
|
<Tabs.Screen |
|
name="index" |
|
options={{ |
|
title: 'Tab One', |
|
tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />, |
|
headerRight: () => ( |
|
<Link href="/modal" asChild> |
|
<Pressable> |
|
{({ pressed }) => ( |
|
<FontAwesome |
|
name="info-circle" |
|
size={25} |
|
color={Colors[colorScheme ?? 'light'].text} |
|
style={{ marginRight: 15, opacity: pressed ? 0.5 : 1 }} |
|
/> |
|
)} |
|
</Pressable> |
|
</Link> |
|
), |
|
}} |
|
/> |
|
<Tabs.Screen |
|
name="two" |
|
options={{ |
|
title: 'Tab Two', |
|
tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />, |
|
}} |
|
/> |
|
<Tabs.Screen |
|
name="demo" |
|
options={{ |
|
title: '完整示例', |
|
tabBarIcon: ({ color }) => <TabBarIcon name="rocket" color={color} />, |
|
}} |
|
/> |
|
<Tabs.Screen |
|
name="paper" |
|
options={{ |
|
title: 'Paper UI', |
|
tabBarIcon: ({ color }) => <TabBarIcon name="paint-brush" color={color} />, |
|
}} |
|
/> |
|
</Tabs> |
|
); |
|
}
|
|
|