чому текст займає повний простір Перегляду, а не просто місце для "Привіт"?
Оскільки View
є ємним гнучким контейнером і за замовчуванням має, flexDirection: 'column'
і alignItems: 'stretch'
це означає, що його дітей слід розтягнути, щоб заповнити його ширину.
(Зауважте, згідно з документами , що всі компоненти в React Native display: 'flex'
за замовчуванням є , а їх display: 'inline'
взагалі не існує. Таким чином, поведінка за замовчуванням Text
в a View
в "React Native" відрізняється від поведінки за замовчуванням span
в мережі div
в Інтернеті; в останньому випадку проміжок не заповнюватиме ширину, div
тому що а 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
властивість стилю).
Природно, який з цих різних підходів ви хочете використовувати - і чи взагалі має значення вибір між ними - залежатиме від ваших точних обставин.
justifyContent
,alignItems
,alignSelf
. Цікаво, що правильно.