Ist es möglich, die Größe (Breite und Höhe) einer bestimmten Ansicht zu ermitteln? Zum Beispiel habe ich eine Ansicht, die den Fortschritt zeigt:
<View ref='progressBar' style={{backgroundColor:'red',flex:this.state.progress}} />
Ich muss die tatsächliche Breite der Ansicht kennen, um andere Ansichten richtig ausrichten zu können. Ist das möglich?
quelle
View
je nach Abmessung eine unterschiedliche Anzeige durchführen . Ich verstehe nicht, wie ich dieonLayout
Funktion der Ansicht verwenden kann, um die Anzeige der Ansicht zu ändern. Führt das nicht zu einer Endlosschleife?onLayout
hängt dies nicht zusammen.Dies ist das einzige, was für mich funktioniert hat:
quelle
Wenn Sie die Größe festlegen und ändern möchten, stellen Sie sie im Layout wie folgt ein:
Sie können viel mehr Variationen davon erstellen, wie es geändert werden soll, indem Sie dies in einer anderen Komponente verwenden, die eine andere Ansicht als Wrapper hat, und einen onResponderRelease-Rückruf erstellen, der den Ort des Berührungsereignisses in den Status übergibt, der dann an die untergeordnete Komponente übergeben werden kann als Eigenschaft, die den aktualisierten Status von onLayout durch Platzieren
{[styles.View2, this.state.view2LayoutProps, this.props.touchEventTopLeft]}
usw. überschreiben könnte .quelle
Sie können das
Dimensions
Modul direkt verwenden und Ihre Ansichtsgrößen berechnen.Dimensions
Geben Sie Ihnen tatsächlich die Hauptfenstergrößen an.Ich hoffe, Ihnen zu helfen!
Update : Wenn Sie heute native
StyleSheet
mit Flex- Arrangements für Ihre Ansichten verwenden, können Sie in weiten Fällen sauberen Code mit eleganten Layoutlösungen schreiben, anstatt Ihre Ansichtsgrößen zu berechnen ...Obwohl das Erstellen von benutzerdefinierten Rasterkomponenten , die auf Ereignisse zur Größenänderung des Hauptfensters reagieren, eine gute Lösung für einfache Widget-Komponenten darstellen könnte
quelle
Vielleicht können Sie verwenden
measure
:quelle
NativeMethodsMixin
. Egal was ich mache,measure
ist immer undefiniert. Irgendwelche Hinweise?NativeMethodsMixin
die Funktion nicht verwenden, sie ist nur für einige Elemente verfügbar. Zum BeispielTouchableWithFeedback
hat die Messfunktion, ein RegularTouchable
jedoch nicht. Versuchen Sie, den vonView
Ihnen verwendeten Typ zu ändern , holen Sie sich die Referenz und prüfen Sie, ob das Kennzahlelement verfügbar ist. Ich bin auch darüber gestolpert.Für mich hat es funktioniert, die Dimensionen auf% zu setzen
width:'100%'
quelle
Hier ist der Code, um die Abmessungen der vollständigen Ansicht des Geräts abzurufen.
var windowSize = Dimensions.get("window");
Verwenden Sie es so:
width=windowSize.width,heigth=windowSize.width/0.565
quelle