Search code examples
react-nativereact-navigation-v5react-navigation-bottom-tab

How to add a line at top of the bottom tab when the current tab is active in react navigation 5


I want to add the line at the top of the bottom tabs, how to add this? like this issue https://github.com/react-navigation/react-navigation/issues/8957

React navigation versions:

"@react-navigation/bottom-tabs": "^5.9.2",
"@react-navigation/native": "^5.7.6",
"@react-navigation/stack": "^5.9.3",
"react": "16.13.1",
"react-native": "0.63.3",

Solution

  • You can use a custom button like below

    const CustomTabButton = (props) => (
      <TouchableOpacity
        {...props}
        style={
          props.accessibilityState.selected
            ? [props.style, { borderTopColor: 'red', borderTopWidth: 2 }]
            : props.style
        }
      />
    );
    

    And provide it as the tabBarButton when initializing the navigation.

    <Tab.Navigator>
      <Tab.Screen
        name="Home"
        component={HomeScreen}
        options={{
          tabBarButton: CustomTabButton,
        }}
      />
      <Tab.Screen
        name="Settings"
        component={SettingsScreen}
        options={{
          tabBarButton: CustomTabButton,
        }}
      />
    </Tab.Navigator>
    

    You can try the below snack https://snack.expo.io/6lMAe57lM