Eu já li vários tutoriais do flexbox, mas ainda não consigo fazer essa tarefa simples funcionar.
Como posso fazer a caixa vermelha com 100% de largura?
Código:
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Natives
</Text>
<Text style={styles.line1}>
line1
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
estilo:
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
borderWidth: 1,
flexDirection: 'column',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
borderWidth: 1,
},
line1: {
backgroundColor: '#FDD7E4',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
borderWidth: 1,
},
Obrigado!
Atualização 1: sugestão de Nishanth Shankar, adicionando flex: 1 para o wrapper, flexDirection: 'row'
Resultado:
Código:
<View style={styles.container}>
<View style={{flex:1}}>
<Text style={styles.welcome}>
Welcome to React Natives
</Text>
</View>
<View style={{flex:1}}>
<Text style={styles.line1}>
line1
</Text>
</View>
<View style={{flex:1}}>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
</View>
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
borderWidth: 1,
flexDirection: 'row',
flexWrap: 'wrap',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
borderWidth: 1,
},
line1: {
backgroundColor: '#FDD7E4',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
borderWidth: 1,
},
flexbox
react-native
franfran
fonte
fonte
width: "100%"
que também deve funcionar, mas não funciona. Eu acho que eu não entendo quandoalignSelf: "stretch"
trabalha vswidth: "100%"
. @Corentin alguma idéia? THX!position: absolute, top: 0, bottom: 0, left: 0, right: 0
Você deveria usar Dimensions
Primeiro, defina Dimensões.
então, mude o
line1
estilo como abaixo:fonte
Dimensions.get('window').scale
- isso deve retornar 2 no seu caso.Editado:
Para flexionar apenas o texto central, uma abordagem diferente pode ser adotada - solte as demais visualizações.
alignItems : 'center'
recipientealignSelf:'center'
às visualizações de texto que você não deseja flexionarVocê pode agrupar o componente de texto em um componente de exibição e conceder à exibição um flex de 1.
O flex dará:
Largura de 100% se o
flexDirection:'row'
em styles.container100% de altura se estiver
flexDirection:'column'
em styles.containerfonte
Aqui está:
Basta alterar o estilo da linha1 conforme abaixo:
fonte
Use javascript para obter a largura e a altura e adicione-as no estilo do View. Para obter largura e altura completas, use
Dimensions.get('window').width
https://facebook.github.io/react-native/docs/dimensions.htmle depois,
fonte
Primeiro adicione o componente Dimension:
Segundo defina Variáveis:
Terceiro, coloque-o na sua folha de estilo:
Na verdade, neste exemplo, eu queria fazer uma visualização responsiva e queria visualizar apenas 0,25 da visualização da tela, então a multipliquei com 0,25, se você quiser que 100% da tela não a multiplique por algo assim:
fonte
fonte
basta remover os
alignItems: 'center'
estilos dos contêineres e adicionartextAlign: "center"
aoline1
estilo como indicado abaixo.Vai funcionar bem
fonte
tente isto:
fonte
width: '100%'
ealignSelf: 'stretch'
não funcionou para mim.Dimensions
não ajustou minha tarefa porque eu precisava operar em uma visão profundamente aninhada. Aqui está o que funcionou para mim, se eu reescrever seu código. Acabei de adicionar mais algumas propriedadesView
e useiflex
para obter o layout necessário:fonte