Warum nimmt der Text den gesamten Platz der Ansicht ein und nicht nur den Platz für "Hallo"?
Weil der View
ein Flex-Container ist und standardmäßig flexDirection: 'column'
und hat alignItems: 'stretch'
, was bedeutet, dass seine Kinder ausgestreckt werden sollten, um seine Breite zu füllen.
(Beachten Sie gemäß den Dokumenten , dass alle Komponenten in React Native display: 'flex'
standardmäßig vorhanden sind und display: 'inline'
überhaupt nicht vorhanden sind. Auf diese Weise unterscheidet sich das Standardverhalten von a Text
in a View
in React Native vom Standardverhalten von a span
in a div
im Web. Im letzteren Fall würde die Spanne nicht die Breite von füllen, div
da a span
standardmäßig ein Inline-Element ist. In React Native gibt es kein solches Konzept.)
Wie kann der Text nach rechts verschoben / ausgerichtet werden?
Die float
Eigenschaft ist in React Native nicht vorhanden, es stehen Ihnen jedoch zahlreiche Optionen zur Verfügung (mit leicht unterschiedlichem Verhalten), mit denen Sie Ihren Text richtig ausrichten können. Hier sind die, an die ich denken kann:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(Dieser Ansatz ändert nichts an der Tatsache, dass der Text Text
die gesamte Breite des View
Textes ausfüllt . Er richtet den Text innerhalb des Textes nach rechts aus Text
.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Dadurch wird das Text
Element auf die Größe verkleinert, die erforderlich ist, um seinen Inhalt zu halten, und es wird am Ende der Querrichtung (standardmäßig der horizontalen Richtung) des Elements platziert View
.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Dies entspricht der Einstellung alignSelf: 'flex-end'
aller View
Kinder des Kindes.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
Legt fest, dass die Hauptrichtung des Layouts horizontal statt vertikal ist. justifyContent
ist genau wie alignItems
, steuert aber die Ausrichtung in der Hauptrichtung anstelle der Querrichtung.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
Dieser Ansatz wird im Kontext des Web und des echten CSS unter https://stackoverflow.com/a/34063808/1709587 demonstriert .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Wie bei echtem CSS wird dadurch das Text
"aus dem Fluss" genommen, was bedeutet, dass seine Geschwister es überlappen können und seine vertikale Position View
standardmäßig oben auf dem (obwohl Sie explizit einen Abstand vom oberen Rand des festlegen können) View
Verwenden der top
style-Eigenschaft).
Welcher dieser verschiedenen Ansätze Sie verwenden möchten - und ob die Wahl zwischen ihnen überhaupt von Bedeutung ist - hängt natürlich von Ihren genauen Umständen ab.
justifyContent
,alignItems
,alignSelf
. Ich frage mich, was richtig ist.