dlaczego tekst zajmuje całą przestrzeń widoku, a nie tylko miejsce na napis „Hello”?
Ponieważ Viewjest to kontener elastyczny i domyślnie ma flexDirection: 'column'i alignItems: 'stretch', co oznacza, że jego elementy podrzędne powinny zostać rozciągnięte, aby wypełnić jego szerokość.
(Zauważ, zgodnie z dokumentacją , że wszystkie komponenty w React Native są display: 'flex'domyślne i one w display: 'inline'ogóle nie istnieją. W ten sposób domyślne zachowanie a Textwewnątrz a Vieww React Native różni się od domyślnego zachowania spanwewnątrz a divw sieci; w tym drugim przypadku rozpiętość nie wypełniłaby szerokości elementu, divponieważ a spanjest domyślnie elementem wbudowanym. W React Native nie ma takiej koncepcji).
Jak można przesunąć tekst / wyrównać go do prawej strony?
Ta floatwłaściwość nie istnieje w React Native, ale jest mnóstwo dostępnych opcji (z nieco innymi zachowaniami), które pozwolą ci wyrównać tekst do prawej. Oto te, które przychodzą mi do głowy:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(To podejście nie zmienia faktu, że Textwypełnia całą szerokość View; po prostu wyrównuje tekst do prawej strony Text.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Spowoduje to zmniejszenie Textelementu do rozmiaru wymaganego do przechowywania jego zawartości i umieszczenie go na końcu kierunku poprzecznego (domyślnie kierunku poziomego) View.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Jest to równoważne z ustawieniem alignSelf: 'flex-end'na wszystkich Viewdzieciach.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'ustawia główny kierunek układu jako poziomy zamiast pionowego; justifyContentdziała podobnie alignItems, ale kontroluje wyrównanie w kierunku głównym zamiast w kierunku poprzecznym.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
To podejście jest zademonstrowane w kontekście sieci i prawdziwego CSS na stronie https://stackoverflow.com/a/34063808/1709587 .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Podobnie jak w prawdziwym CSS, powoduje to Text„wyjście z przepływu”, co oznacza, że jego rodzeństwo będzie mogło na niego nakładać, a jego pozycja w pionie będzie Viewdomyślnie na górze (chociaż możesz wyraźnie ustawić odległość od górnej krawędziView używając topwłaściwości style).
Oczywiście, które z tych różnych podejść chcesz zastosować - i czy wybór między nimi w ogóle ma znaczenie - będzie zależeć od twoich konkretnych okoliczności.
justifyContent,alignItems,alignSelf. Zastanawiam się, co jest poprawne.