pourquoi le texte occupe-t-il tout l'espace de la vue, au lieu de l'espace réservé à "Bonjour"?
Parce que le View
est un conteneur flexible et a par défaut flexDirection: 'column'
et alignItems: 'stretch'
, ce qui signifie que ses enfants doivent être étirés pour remplir sa largeur.
(Notez, d'après la documentation , que tous les composants de React Native sont display: 'flex'
par défaut et que cela display: 'inline'
n'existe pas du tout. De cette façon, le comportement par défaut de a Text
dans a View
dans React Native diffère du comportement par défaut de span
within a div
sur le Web; dans ce dernier cas, l'étendue ne remplirait pas la largeur du div
car a span
est un élément en ligne par défaut. Un tel concept n'existe pas dans React Native.)
Comment le texte peut-il être flotté / aligné vers la droite?
La float
propriété n'existe pas dans React Native, mais de nombreuses options s'offrent à vous (avec des comportements légèrement différents) qui vous permettront d'aligner à droite votre texte. Voici ceux auxquels je peux penser:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(Cette approche ne change pas le fait que le Text
remplit toute la largeur du View
; il aligne juste à droite le texte dans le Text
.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Cela réduit l' Text
élément à la taille requise pour contenir son contenu et le place à la fin de la direction transversale (la direction horizontale, par défaut) du View
.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Cela équivaut à définir alignSelf: 'flex-end'
sur tous les View
enfants de.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
définit la direction principale de la mise en page pour qu'elle soit horizontale au lieu de verticale; justifyContent
est juste comme alignItems
, mais contrôle l'alignement dans la direction principale au lieu de la direction transversale.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
Cette approche est démontrée, dans le contexte du web et du vrai CSS, sur https://stackoverflow.com/a/34063808/1709587 .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Comme dans le vrai CSS, cela Text
supprime le "hors flux", ce qui signifie que ses frères et sœurs pourront le chevaucher et que sa position verticale sera en haut du View
par défaut (bien que vous puissiez définir explicitement une distance à partir du haut du View
en utilisant la top
propriété style).
Naturellement, laquelle de ces différentes approches vous souhaitez utiliser - et si le choix entre elles compte même du tout - dépendra de votre situation précise.
justifyContent
,alignItems
,alignSelf
. Je me demande ce qui est correct.