почему текст занимает все пространство представления, а не просто "Hello"?
Потому что Viewэто гибкий контейнер и по умолчанию имеет flexDirection: 'column'и alignItems: 'stretch', что означает, что его дочерние элементы должны быть растянуты, чтобы заполнить его ширину.
(Обратите внимание, в соответствии с документами , что все компоненты в React Native display: 'flex'по умолчанию являются и display: 'inline'вообще не существуют. Таким образом, поведение по умолчанию для элемента Textвнутри Viewв React Native отличается от поведения по умолчанию для элемента spanвнутри divв Интернете; в последнем случае span не будет заполнять ширину, divпотому что a spanявляется встроенным элементом по умолчанию. В React Native такого понятия нет.)
Как текст может быть перемещен / выровнен вправо?
Это floatсвойство не существует в React Native, но есть множество доступных вам опций (с немного другим поведением), которые позволят вам выровнять текст по правому краю. Вот те, о которых я могу думать:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(Этот подход не меняет тот факт, что Textзаполняет всю ширину View; он просто выравнивает текст по правому краю Text.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Это сжимает Textэлемент до размера, необходимого для хранения его содержимого, и помещает его в конец поперечного направления (по умолчанию в горизонтальном направлении) View.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Это эквивалентно установке alignSelf: 'flex-end'на всех Viewдочерних элементах.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'устанавливает основное направление макета как горизонтальное, а не вертикальное; justifyContentточно так же alignItems, но управляет выравниванием в основном направлении, а не в поперечном направлении.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
Этот подход демонстрируется в контексте Интернета и реального CSS на https://stackoverflow.com/a/34063808/1709587 .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Как и в реальном CSS, это берет Text«вне потока», то есть его братья и сестры смогут перекрывать его, и его вертикальное положение будет Viewпо умолчанию сверху (хотя вы можете явно установить расстояние от вершины Viewиспользуя topсвойство style).
Естественно, какой из этих различных подходов вы хотите использовать - и будет ли вообще важен выбор между ними - будет зависеть от ваших конкретных обстоятельств.
justifyContent,alignItems,alignSelf. Интересно, что правильно.