Je crée un formulaire dans React Native et je voudrais rendre mon TextInput
s 80% de la largeur de l'écran.
Avec HTML et CSS ordinaire, ce serait simple:
input {
display: block;
width: 80%;
margin: auto;
}
Sauf que React Native ne prend pas en charge la display
propriété, les largeurs en pourcentage ou les marges automatiques.
Alors, que dois-je faire à la place? Il y a une discussion sur ce problème dans le suivi des problèmes de React Native, mais les solutions proposées semblent être de vilains hacks.
javascript
css
reactjs
react-native
Mark Amery
la source
la source
react-native
utiliseflex
pour les tailles et les positions des éléments. Je ne suis pas sûr mais c'est peut-êtreflex-basis
ce dont vous avez besoin: Vérifiez ceci et celaflex: 0.8
peut faire le travail.Réponses:
À partir de React Native 0.42
height:
etwidth:
accepter les pourcentages.Utilisez
width: 80%
dans vos feuilles de style et cela fonctionne.Capture d'écran
Exemple en direct
Largeur / hauteur de l'enfant en proportion du parent
Code
la source
Cela devrait répondre à vos besoins:
la source
Si vous cherchez simplement à rendre l'entrée relative à la largeur de l'écran, un moyen simple serait d'utiliser Dimensions:
J'ai mis en place un projet de travail ici . Le code est également ci-dessous.
https://rnplay.org/apps/rqQPCQ
la source
Dans votre StyleSheet, mettez simplement:
au lieu de:
Continuez à coder ........ :)
la source
Vous pouvez également essayer la feuille de style react-native-extended-style qui prend en charge le pourcentage pour les applications à orientation unique:
la source
La technique que j'utilise pour avoir un pourcentage de largeur du parent ajoute une vue d'espacement supplémentaire en combinaison avec une flexbox. Cela ne s'appliquera pas à tous les scénarios, mais cela peut être très utile.
Alors on y va:
Fondamentalement, la propriété flex est la largeur par rapport au flex "total" de tous les éléments du conteneur flex. Donc, si tous les éléments totalisent 100, vous avez un pourcentage. Dans l'exemple, j'aurais pu utiliser les valeurs de flex 6 et 4 pour le même résultat, donc c'est encore plus FLEXible.
Si vous souhaitez centrer la vue en pourcentage de largeur: ajoutez deux entretoises avec la moitié de la largeur. Donc, dans l'exemple, ce serait 2-6-2.
Bien sûr, ajouter des vues supplémentaires n'est pas la chose la plus agréable au monde, mais dans une application du monde réel, je peux imaginer que l'espaceur contiendra un contenu différent.
la source
J'ai une solution mise à jour (fin 2019), pour obtenir une largeur de 80% du parent de manière réactive avec Hooks, cela fonctionne même si l'appareil tourne.
Vous pouvez utiliser
Dimensions.get('window').width
pour obtenir la largeur de l'appareil dans cet exemple, vous pouvez voir comment vous pouvez le faire de manière réactivela source
C'est ainsi que j'ai trouvé la solution. Simple et doux. Indépendant de la densité de l'écran:
la source
Le moyen le plus simple consiste à appliquer une largeur à la vue.
la source