问题概述
我正在开发一个应用程序,其中包含以下底部导航栏,但我不确定如何样式化它,因为它比我过去曾经样式化的任何内容都要复杂。我无法样式化白色部分的弧形顶部边缘以及蓝/绿圆圈和白色部分之间的区域。
我在模型中包括了导航栏应该看起来像什么,因为其中一个似乎混合在一起。绿/蓝圆圈和白色部分之间的黑色背景不应该使用此导航栏进行样式化,这应该是导航栏后面看到的背景。
任何帮助将不胜感激!
<View style={styles.container}>
</View>
container: {
width: windowWidth,
height: windowHeight * 0.1020935961,
backgroundColor: "white",
flexDirection: "row",
justifyContent: "space-around",
borderTopLeftRadius: -50,
borderTopRightRadius: -50
}
完整代码
const CustomTabNav = () => (
<View style={styles.container}>
<TouchableOpacity
style={styles.instant}
onPress={() => {
NavigationService.navigate("Home");
}}
>
<Image
style={styles.homeImage}
source={require("~/assets/images/homeIcon.png")}
/>
</TouchableOpacity>
<TouchableOpacity
style={styles.ovalCopy}
onPress={() => NavigationService.navigate("Competitions")}
>
<LinearGradient
start={{ x: 0, y: 1 }}
end={{ x: 1, y: 0 }}
colors={[buttonGradientBlueColor, buttonGradientGreenColor]}
style={styles.linearGradient}
>
<Image
style={styles.plusImage}
source={require("~/assets/images/plus.png")}
/>
</LinearGradient>
</TouchableOpacity>
<TouchableOpacity
style={styles.instant}
onPress={() => NavigationService.navigate("Competitions")}
>
<Image
style={styles.instantImage}
source={require("~/assets/images/competitions.png")}
/>
</TouchableOpacity>
</View>
);
const styles = StyleSheet.create({
container: {
width: windowWidth,
height: windowHeight * 0.1020935961,
backgroundColor: "white",
flexDirection: "row",
justifyContent: "space-around",
borderTopLeftRadius: -50,
borderTopRightRadius: -50
},
homeImage: {
width: windowWidth * 0.05,
height: windowWidth * 0.05
},
instant: {
flexDirection: "column",
// alignSelf: 'center',
justifyContent: "center"
},
instantImage: {
width: windowWidth * 0.05,
height: windowWidth * 0.05
},
ovalCopy: {
width: 64,
height: 64,
},
linearGradient: {
borderRadius: 50, //TODO: make sure this is correct
width: 64,
height: 64,
shadowColor: "#0a0b12cc",
shadowOffset: {
width: 0,
height: -10
},
shadowRadius: 60,
shadowOpacity: 1,
alignItems: 'center',
justifyContent: 'center'
},
plusImage: {
width: windowWidth*0.064,
height: windowWidth*0.064
}
});