React Native:在白色背景中间添加灰色条带但无法在其中写入内容的问题
解决React Native中灰色条带无法写入内容的问题
嘿,我一眼就瞅出问题所在了——你给lowerContainer设置了top: 1400,这直接让这个容器脱离了正常的flex布局流,导致你往里面加的内容根本不在你视觉上看到的灰色条带区域里,自然就没法正常显示内容啦!
方案1:如果想让灰色区域占据屏幕下半部分
直接删掉top: 1400就行,因为你的container是flexDirection: column布局,upperContainer和lowerContainer都设置了flex:1,本来就会自动平分容器空间,内容能正常放进灰色区域里:
修改后的样式代码:
container: { flex: 1, justifyContent: "center", marginTop: 12, flexDirection: "column", }, upperContainer: { flex: 1, backgroundColor: "#fff", }, lowerContainer: { flex: 1, // 移除top: 1400这一行 backgroundColor: "#F7F7F7", }
方案2:如果想在白色背景中间加一条固定高度的灰色条带
如果你的需求是白色区域占大部分,中间有一条灰色条带,那可以调整布局结构,给灰色条带设置固定高度,让上下白色区域按比例分配空间:
样式代码:
container: { flex: 1, marginTop: 12, flexDirection: "column", }, upperWhiteArea: { flex: 3, // 上方白色区域占3份空间 backgroundColor: "#fff", }, middleGrayBand: { height: 200, // 灰色条带固定高度,可按需调整 backgroundColor: "#F7F7F7", padding: 16, // 可选,给内容加内边距更美观 }, lowerWhiteArea: { flex: 3, // 下方白色区域占3份空间 backgroundColor: "#fff", }
对应的JSX代码:
<ScrollView style={{ flex: 1 }} contentContainerStyle={{ flexGrow: 1 }}> <View style={styles.container}> <View style={styles.upperWhiteArea}> {/* 上方白色区域的内容 */} </View> <View style={styles.middleGrayBand}> {/* 这里可以正常写入灰色条带的内容啦 */} <Text>这是灰色条带里的文字内容</Text> <TextInput placeholder="也能正常输入内容哦" /> </View> <View style={styles.lowerWhiteArea}> {/* 下方白色区域的内容 */} </View> </View> </ScrollView>
为什么top:1400会导致问题?
在flex布局中,top属性属于定位属性(默认是static定位,top不会生效,但如果你没设置position就用top,会让元素脱离正常的文档流)。你设置的top:1400只是把灰色容器的视觉位置移到了下方,但容器的实际布局空间还是在原来的位置,你往里面加的内容其实会出现在原来的位置(可能在屏幕外),所以看起来像是没法写入内容。
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

