J'ai actuellement un <TextInput>
dans un <View>
qui a un padding: 15
. J'aimerais que la largeur et la hauteur de <TextInput>'s
couvrent tout l'espace à l'intérieur de <View>
à l'exception du remplissage.
J'ai donc essayé var width = Dimensions.get('window').width
et les options suivantes, mais le < TextInput >
respecte le remplissage à gauche, mais lorsque vous continuez à taper, il dépasse le remplissage à droite:
<View style = {{ padding: 15 }}> <TextInput style = {{ width: width }} /> </View>
Alors, comment puis-je obtenir que TextInput couvre tout l'espace, la hauteur et la largeur, dans View tout en respectant la règle de remplissage de View?
Je vous remercie
Essayez de définir le style de TextInput sur flex: 1 au lieu d’obtenir la largeur. Le style Flex remplit automatiquement votre vue et laisse le remplissage vierge.
<View style = {{ padding: 15 }}> <TextInput style = {{ flex: 1 }} /> </View>
Une autre bonne réponse serait d'ajouter:
alignItems: 'stretch'
alignItems: 'stretch' étendra chaque élément enfant le long de l'axe transversal tant que l'élément enfant n'a pas la largeur (flexDirection: ligne) ou la hauteur spécifiée (flexDirection: colonne). Un séjour sans faille
Dans votre conteneur, si vous en avez un, quelque chose comme:
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'stretch',
}
});
essayez d’obtenir d’abord les dimensions de View
:
<View
onLayout={(event) => {
var {x_pos, y_pos, width, height} = event.nativeEvent.layout;
}}
/>
Ensuite, utilisez la largeur et la hauteur récupérées pour définir la largeur et la hauteur de votre TextInput
. La seule chose à faire est d'obtenir ces valeurs au moment de l'exécution.