чому текст займає повний простір Перегляду, а не просто місце для "Привіт"?
Оскільки 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. Цікаво, що правильно.