Eu tenho um elemento que eu quero flutuar direito, por exemplo
<View style={{width: 300}}>
<Text style={{backgroundColor: "#DDD"}}>Hello</Text>
</View>
Como pode Text
ser flutuado / alinhado à direita? Além disso, por que Text
ocupam todo o espaço do View
, em vez de apenas o espaço para "Olá"?
react-native
Um cara
fonte
fonte
justifyContent
,alignItems
,alignSelf
. Eu me pergunto o que está correto.Respostas:
Como o
View
container é flexível e, por padrão, possuiflexDirection: 'column'
ealignItems: '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 edisplay: 'inline'
nem sequer existem. Dessa forma, o comportamento padrão de aText
dentro de umView
no React Native difere do comportamento padrão despan
dentro de umdiv
na Web; neste último caso, a extensão não preencheria a largura dodiv
porque aspan
é um elemento embutido por padrão. Não existe esse conceito no React Native.)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:1. Use
textAlign: 'right'
noText
elemento(Essa abordagem não altera o fato de que ela
Text
preenche toda a largura daView
; apenas alinha o texto com a direitaText
.)2. Use
alignSelf: 'flex-end'
noText
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) doView
.3. Use
alignItems: 'flex-end'
noView
Isso é equivalente à configuração
alignSelf: 'flex-end'
em todos osView
filhos.4. Use
flexDirection: 'row'
ejustifyContent: 'flex-end'
noView
flexDirection: 'row'
define a direção principal do layout como horizontal em vez de vertical;justifyContent
é comoalignItems
, mas controla o alinhamento na direção principal, em vez da direção transversal.5. Use
flexDirection: 'row'
noView
emarginLeft: 'auto'
noText
Essa abordagem é demonstrada, no contexto da Web e do CSS real, em https://stackoverflow.com/a/34063808/1709587 .
6. Use
position: 'absolute'
eright: 0
noText
: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 daView
por padrão (embora você possa definir explicitamente uma distância da parte superior daView
usando atop
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.
fonte
<Text><Text>FLOAT TEXT</Text>multi line text here which wraps around float text
Ou mesmo, mas com imagem como isto:<View><Text><Image />multi line text which wrap around float image</Text>
.Você pode especificar diretamente o alinhamento do item, por exemplo:
fonte
display
valores válidos são'flex'
e'none'
.Para mim, definir
alignItems
um pai fez o truque, como:fonte
Você não deve usar carros alegóricos no React Native. O React Native utiliza o flexbox para lidar com tudo isso.
No seu caso, você provavelmente desejará que o contêiner tenha um atributo
E sobre o texto ocupando todo o espaço, novamente, você precisa dar uma olhada no seu contêiner.
Aqui está um link para um ótimo guia sobre o flexbox: Um guia completo para o Flexbox
fonte
flexDirection
: Se você deseja mover horizontalmente (linha) ou verticalmente (coluna)justifyContent
: a direção que você deseja mover.fonte
justifyContent
não escolhe uma direção em si; oferece várias opções sobre como as coisas são posicionadas e espaçadas ao longo da principal direção flexível.Você pode flutuar: direito em reagir nativo usando flex:
para obter mais detalhes: https://facebook.github.io/react-native/docs/flexbox.html#flex-direction
fonte