J'ai déjà lu plusieurs tutoriels flexbox, mais je n'arrive toujours pas à faire fonctionner cette tâche simple.
Comment puis-je rendre la boîte rouge à 100% de largeur?
Code:
<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>
style:
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,
},
Je vous remercie!
Mise à jour 1: suggestion de Nishanth Shankar, ajout de flex: 1 pour le wrapper, flexDirection: 'row'
Production:
Code:
<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
la source
la source
width: "100%"
devrait aussi fonctionner mais ça ne marche pas. Je pense que je ne comprends pas quandalignSelf: "stretch"
fonctionne vswidth: "100%"
. @Corentin des idées? THX!position: absolute, top: 0, bottom: 0, left: 0, right: 0
Vous devez utiliser Dimensions
Définissez d'abord les dimensions.
puis changez de
line1
style comme ci-dessous:la source
Dimensions.get('window').scale
- cela devrait renvoyer 2 dans votre cas.Modifié:
Afin de fléchir uniquement le texte central, une approche différente peut être adoptée - Détachez les autres vues.
alignItems : 'center'
contenantalignSelf:'center'
aux vues de texte que vous ne souhaitez pas modifierVous pouvez encapsuler le composant Texte dans un composant Vue et donner à la Vue un flex de 1.
Le flex donnera:
100% de largeur si le
flexDirection:'row'
dans styles.container100% de hauteur si le
flexDirection:'column'
dans styles.containerla source
Voici:
Modifiez simplement le style line1 comme ci-dessous:
la source
Utilisez javascript pour obtenir la largeur et la hauteur et ajoutez-les dans le style de View. Pour obtenir la largeur et la hauteur complètes, utilisez
Dimensions.get('window').width
https://facebook.github.io/react-native/docs/dimensions.htmlpuis,
la source
Ajoutez d'abord le composant Dimension:
Deuxième définition des variables:
Troisièmement, mettez-le dans votre feuille de style:
En fait, dans cet exemple, je voulais faire une vue réactive et je ne voulais voir que 0,25 de la vue d'écran, donc je l'ai multiplié par 0,25, si vous vouliez 100% de l'écran, ne le multipliez pas avec quelque chose comme ça:
la source
la source
il suffit de supprimer les
alignItems: 'center'
styles de conteneur et d'ajoutertextAlign: "center"
auline1
style comme indiqué ci-dessous.Cela fonctionnera bien
la source
essaye ça:
la source
width: '100%'
etalignSelf: 'stretch'
n'a pas fonctionné pour moi.Dimensions
n'a pas adapté ma tâche car j'avais besoin d'opérer sur une vue profondément imbriquée. Voici ce qui a fonctionné pour moi, si je réécris votre code. J'ai juste ajouté quelques propriétés supplémentairesView
et utiliséflex
pour obtenir la disposition requise:la source