Est-il possible d'obtenir la taille (largeur et hauteur) d'une certaine vue? Par exemple, j'ai une vue montrant la progression:
<View ref='progressBar' style={{backgroundColor:'red',flex:this.state.progress}} />
J'ai besoin de connaître la largeur réelle de la vue pour aligner correctement les autres vues. Est-ce possible?
ios
react-native
Matthieu
la source
la source
View
différemment en fonction des dimensions. Je ne comprends pas comment je peux utiliser laonLayout
fonction de vue pour changer la façon dont j'affiche la vue. Cela ne mène-t-il pas à une boucle infinie?onLayout
n'a aucun rapport.C'est la seule chose qui a fonctionné pour moi:
la source
Fondamentalement, si vous souhaitez définir la taille et la modifier, définissez-la comme suit sur la mise en page:
Vous pouvez créer beaucoup plus de variations de la façon dont il doit être modifié, en utilisant ceci dans un autre composant qui a une autre vue comme wrapper et créer un rappel onResponderRelease, qui pourrait passer l'emplacement de l'événement tactile dans l'état, qui pourrait ensuite être passé au composant enfant en tant que propriété, qui pourrait remplacer l'état mis à jour de onLayout, en plaçant
{[styles.View2, this.state.view2LayoutProps, this.props.touchEventTopLeft]}
et ainsi de suite.la source
Vous pouvez directement utiliser le
Dimensions
module et calculer la taille de vos vues. En fait,Dimensions
donnez-vous les principales tailles de fenêtre.J'espère vous aider!
Mise à jour : Aujourd'hui, l'utilisation de la configuration native
StyleSheet
avec Flex sur vos vues aide à écrire du code propre avec des solutions de mise en page élégantes dans des cas larges au lieu de calculer vos tailles de vue ...Bien que la création de composants de grille personnalisés , qui répondent aux événements de redimensionnement de la fenêtre principale, puisse produire une bonne solution dans de simples composants de widget
la source
Peut-être que vous pouvez utiliser
measure
:la source
NativeMethodsMixin
. Peu importe ce que je fais,measure
c'est toujours indéfini. Des pointeurs?NativeMethodsMixin
la fonction n'est disponible que sur certains éléments. Par exemple,TouchableWithFeedback
a la fonction de mesure, mais pas un régulierTouchable
. Essayez de changer le type queView
vous utilisez, obtenez la référence et vérifiez si l'élément de mesure est disponible. J'ai trébuché là-dessus aussi.pour moi, définir les dimensions pour utiliser% est ce qui a fonctionné pour moi
width:'100%'
la source
Voici le code pour obtenir les dimensions de la vue complète de l'appareil.
var windowSize = Dimensions.get("window");
Utilisez-le comme ceci:
width=windowSize.width,heigth=windowSize.width/0.565
la source