React Native使用react-native-fast-shadow组件时阴影显示异常问题
解决react-native-fast-shadow阴影显示在盒子上方的问题
react-native-fast-shadow的ShadowedView默认会把阴影绘制在子视图上方,这就是你遇到阴影盖在盒子上的原因。要让阴影处于盒子后方,需要调整组件嵌套结构和层级:
具体修改方案
- 拆分阴影层与内容层:将
ShadowedView作为独立的背景阴影层,内容View放在它上方 - 用绝对定位控制阴影层位置,确保它和内容View尺寸一致且处于下方
- 给外层容器设置相对定位,保证阴影层的绝对定位生效
修改后的代码示例
// 外层容器,设置相对定位 <View style={{ position: 'relative' }}> {/* 阴影层:继承内容View的尺寸样式,绝对定位在下方 */} <ShadowedView style={{ ...styles.item, ...styles.card, position: 'absolute', shadowOpacity: 0.1, shadowRadius: 12, shadowOffset: { width: -10, height: 0 }, backgroundColor: 'transparent', // 阴影层无需背景色 zIndex: 0 }} /> {/* 内容层:放在阴影层上方,保留原有样式 */} <View style={[styles.item, styles.card, { zIndex: 1 }]}> <Text style={{fontWeight:600, color:"rgba(11, 88, 141, 1)"}}>text</Text> <View style={styles.bottomrow}> <Text style={{ paddingRight: 20 }}>text</Text> <Text style={{ color: "#FA0000" }}>text</Text> </View> </View> </View>
关键说明
- 内容View的半透明背景
rgba(227, 234, 255, 0.3)不会遮挡下方阴影,因为阴影层层级更低 - 如果
styles.item或styles.card已经包含尺寸、边距样式,阴影层直接继承就能和内容View完全对齐 - 通过
zIndex明确指定层级,避免不同平台的渲染差异
内容的提问来源于stack exchange,提问作者abcd
相关产品推荐
相关产品推荐

