我目前有一个<TextInput>
里面的<View>
有一个padding: 15
。我希望<TextInput>'s
的宽度和高度覆盖<View>
内的所有空间,除了填充。
所以我尝试了var width = Dimensions.get('window').width
和以下内容,但是< TextInput >
遵守左侧的填充,但是当你继续键入时,它超出了右侧填充:
<View style = {{ padding: 15 }}> <TextInput style = {{ width: width }} /> </View>
那么我怎么能得到的TextInput覆盖所有的空间,高度和宽度,在视图内部,但遵守视图的填充规则,以及?
谢谢
尝试将TextInput的样式设置为flex: 1,而不是获取宽度。Flex样式将自动填充您的视图,并保留空白填充。
<View style = {{ padding: 15 }}> <TextInput style = {{ flex: 1 }} /> </View>
另一个好的答案是:
alignItems: 'stretch'
alignItems: 'stretch'将沿着十字轴拉伸每个子元素,只要子元素没有指定宽度(flexDirection: row)或高度(flexDirection: column)。
在你的容器中,如果你有一个,像这样:
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'stretch',
}
});
尝试先获得View
的尺寸:
<View
onLayout={(event) => {
var {x_pos, y_pos, width, height} = event.nativeEvent.layout;
}}
/>
然后使用检索的宽度和高度来设置您的TextInput
的宽度和高度。唯一的事情是你在运行时得到这些值。