por que o texto ocupa todo o espaço da tela, em vez de apenas o espaço para "Olá"?
Como o View
container é flexível e, por padrão, possui flexDirection: 'column'
e alignItems: 'stretch'
, o que significa que seus filhos devem ser esticados para preencher sua largura.
(Observe que, de acordo com os documentos , todos os componentes do React Native são display: 'flex'
por padrão e display: 'inline'
nem sequer existem. Dessa forma, o comportamento padrão de a Text
dentro de um View
no React Native difere do comportamento padrão de span
dentro de um div
na Web; neste último caso, a extensão não preencheria a largura do div
porque a span
é um elemento embutido por padrão. Não existe esse conceito no React Native.)
Como o texto pode ser flutuado / alinhado à direita?
A float
propriedade não existe no React Native, mas existem muitas opções disponíveis (com comportamentos ligeiramente diferentes) que permitem alinhar corretamente o texto. Aqui estão os que eu consigo pensar:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(Essa abordagem não altera o fato de que ela Text
preenche toda a largura da View
; apenas alinha o texto com a direita Text
.)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
Isso reduz o Text
elemento ao tamanho necessário para manter seu conteúdo e o coloca no final da direção da cruz (a direção horizontal, por padrão) do View
.
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
Isso é equivalente à configuração alignSelf: 'flex-end'
em todos os View
filhos.
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
define a direção principal do layout como horizontal em vez de vertical; justifyContent
é como alignItems
, mas controla o alinhamento na direção principal, em vez da direção transversal.
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
Essa abordagem é demonstrada, no contexto da Web e do CSS real, em https://stackoverflow.com/a/34063808/1709587 .
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
Como no CSS real, isso leva o Text
"fora de fluxo", o que significa que seus irmãos poderão se sobrepor e sua posição vertical estará na parte superior da View
por padrão (embora você possa definir explicitamente uma distância da parte superior da View
usando a top
propriedade style).
Naturalmente, qual dessas várias abordagens você deseja usar - e se a escolha entre elas importa mesmo - dependerá de suas circunstâncias precisas.
justifyContent
,alignItems
,alignSelf
. Eu me pergunto o que está correto.