使用react-native,我希望TextInput与MaterialIcons.Button在同一行中卡住。
我希望所有元素水平居中,但使用以下代码无法实现:
import React from 'react';
import {
StyleSheet, TextInput, View,
} from 'react-native';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
const WordInput = () => {
return (
<View style={styles.container}>
<View style={styles.textInputContainer}>
<TextInput
textAlign="left"
/>
</View>
<View style={styles.arrowButtonContainer}>
<MaterialIcons.Button
name="arrow-forward-ios"
/>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
flex: 1,
},
textInputContainer: {
flex: 1,
alignItems: 'flex-end',
justifyContent: 'center',
},
arrowButtonContainer: {
flex: 1,
alignItems: 'flex-start',
justifyContent: 'center',
},
});
下面是关联的expo snack link。
问题是当我在TextInput中键入文本时,Button根本不移动。我希望它在TextInput的宽度增加时动态向右移动。整体应该水平居中。
有人知道我该怎么做吗?
谢谢!
1条答案
按热度按时间vyswwuz21#
不幸的是,
<TextInput>
在默认情况下不支持任何类型的“自动增长”行为,但是您可以使用隐藏的<Text>
层自己实现一些东西,该层具有与<TextInput>
相同的字体样式和大小规则。你可以测量这个元素的布局并将测量的宽度应用到你的<TextInput>
组件。这是一个expo snack example。