React Native中BottomTabNavigator上方的白色

5q4ezhmt  于 2023-02-05  发布在  React
关注(0)|答案(5)|浏览(155)

我刚开始用react-native开发一个应用程序,添加了一个底部导航,然后我开始设计组件的样式,注意到导航上方有一条白色,我无法摆脱它。
问题的图片

如果你知道如何让这条线与背景颜色相同,我将不胜感激。有可能视图背后的默认背景颜色是“闪亮的”,因为它是白色的,我不知道如何改变它。这款应用程序只能在我自己的iPhone XR上运行,所以我不担心与安卓或其他iPhone机型的兼容性
我是一个完全的react-native初学者,所以请耐心听我说,下面是我目前为止的代码:

导航

const Tab = createBottomTabNavigator();

export default function App() {
    return (
        <NavigationContainer>
            <Tab.Navigator
                tabBarOptions={{
                    activeTintColor: Colors.tabIconSelected,
                    inactiveTintColor: Colors.tabIconDefault,
                    style: styles.container
                }}>
                <Tab.Screen
                    name="Payments"
                    component={PaymentScreen}
                    options={{
                        tabBarIcon: ({focused}) => <TabBarIcon focused={focused} name="logout"/>
                    }}/>
                <Tab.Screen
                    name="Income"
                    component={IncomeScreen}
                    options={{
                        tabBarIcon: ({focused}) => <TabBarIcon focused={focused} name="login"/>
                    }}/>
            </Tab.Navigator>
        </NavigationContainer>
    );
}

const styles = StyleSheet.create({
    container: {
        backgroundColor: Colors.darkBackgroundColor,
    }
});

付款视图

export default class PaymentScreen extends Component{
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.text}>Payments!</Text>
            </View>
        )
    }
}

const styles = StyleSheet.create({
    container:{
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: Colors.backgroundColor,
    },
    text:{
        color: Colors.textColor
    }
});
8ftvxx2r

8ftvxx2r1#

**编辑:**自从我发布这个答案后,API已经更改。如果这个解决方案不适合您,请参阅下面的解决方案

我自己经过一些尝试和错误后发现了这一点。NavigationContainerTab.Navigator类有一个名为tabBarOptions的属性,它将样式表作为它的style选项。当然,组件的边框也可以在这里更改。
不过,这里有一个陷阱:将borderWidth设置为0不会隐藏导航上方的白色边框。只有将borderTopWidth设置为0才能达到预期效果。
完整的解决方案如下所示:

<NavigationContainer>
     <Tab.Navigator
         tabBarOptions={{
             activeTintColor: Colors.tabIconSelected,
             inactiveTintColor: Colors.tabIconDefault,
             style: styles.container
         }}/>
</NavigationContainer>

const styles = StyleSheet.create({
    container: {
        backgroundColor: Colors.darkBackgroundColor,
        borderTopWidth: 0
    }
});
ukdjmx9f

ukdjmx9f2#

您可以在screenOption props中的tabBarStyle中删除它,如下所示

<Tab.Navigator 
      screenOptions={
            tabBarStyle:{borderTopWidth:0}
                     }
  />
wwodge7n

wwodge7n3#

使用React导航6.x

在我的例子中,我必须在每个Tab.Screen上放置tabBarStyle,例如:

<Tab.Screen name="HomeTab" component={xx} options={({ route }) => ({
    title: 'Home',
    tabBarStyle: {borderTop: 0},
})} />
<Tab.Screen name="SecondTab" component={xx} options={({ route }) => ({
    title: 'SecondTab',
    tabBarStyle: {borderTop: 0},
})} />
<Tab.Screen name="ThirdTab" component={xx} options={({ route }) => ({
    title: 'ThirdTab',
    tabBarStyle: {borderTop: 0},
})} />
rsaldnfx

rsaldnfx4#

(无法对此答案进行评论,因为链接太长)
这一行似乎不能删除。它是默认的BottomTab渲染时出现的,以区分BottomTab和屏幕的其余部分。通过这个example,并尝试为'BottomTab'应用多种背景颜色,然后你会明白一点清楚。

ltskdhd1

ltskdhd15#

在底部选项卡导航器v6中,您可以使用tabBarStyle属性来解决此白色问题。
确保给定borderTopWidth:0,

screenOptions={({route}) =>({
    tabBarStyle: {
      height: IS_IPHONE ? RFValue(47) : RFValue(42),
      backgroundColor: AppTheme.colors.darkGrey,
      borderTopWidth: 0,
    },

()}

相关问题