Ya he leído varios tutoriales de flexbox, pero todavía no puedo hacer que esta simple tarea funcione.
¿Cómo puedo hacer que el cuadro rojo tenga un ancho del 100%?
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,
},
¡Gracias!
Actualización 1: Sugerencia de Nishanth Shankar, agregando flex: 1 para el contenedor, flexDirection: 'row'
Salida:
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
fuente
fuente
width: "100%"
que también debería funcionar, pero no es así. Creo que no entiendo cuando sealignSelf: "stretch"
trabaja frentewidth: "100%"
. @Corentin alguna idea? ¡Gracias!position: absolute, top: 0, bottom: 0, left: 0, right: 0
Debes usar Dimensiones
Primero, defina Dimensiones.
luego, cambie el
line1
estilo como a continuación:fuente
Dimensions.get('window').scale
: esto debería devolver 2 en su caso.Editado:
Para flexionar solo el texto central, se puede adoptar un enfoque diferente: Desplegar las otras vistas.
alignItems : 'center'
recipientealignSelf:'center'
a las vistas de texto que no desea flexionarPuede ajustar el componente Texto en un componente Vista y darle a la Vista una flexión de 1.
El flex dará:
100% de ancho si está
flexDirection:'row'
en styles.container100% de altura si está
flexDirection:'column'
en styles.containerfuente
Aqui tienes:
Simplemente cambie el estilo de línea1 como se muestra a continuación:
fuente
Use JavaScript para obtener el ancho y la altura y agréguelos en el estilo de Vista. Para obtener el ancho y la altura completos, use
Dimensions.get('window').width
https://facebook.github.io/react-native/docs/dimensions.htmly entonces,
fuente
Primero agregue el componente Dimensión:
Segundo definir variables:
Tercero, póngalo en su hoja de estilo:
En realidad, en este ejemplo, quería hacer una vista receptiva y quería ver solo 0.25 de la vista de pantalla, así que la multipliqué por 0.25, si quería el 100% de la pantalla, no la multiplique con algo como esto:
fuente
fuente
simplemente elimine los
alignItems: 'center'
estilos del contenedor y agréguelostextAlign: "center"
alline1
estilo que se muestra a continuación.Funcionará bien
fuente
prueba esto:
fuente
width: '100%'
yalignSelf: 'stretch'
no funcionó para míDimensions
no encajaba en mi tarea porque necesitaba operar en una vista profundamente anidada. Esto es lo que funcionó para mí, si reescribo su código. Acabo de agregar algunos másView
y uséflex
propiedades para lograr el diseño necesario:fuente