Außer dass React Native die nicht unterstützt display Eigenschaften, prozentuale Breiten oder automatische Ränder.
Was soll ich stattdessen tun? Es gibt einige Diskussion über dieses Problem im Issue Tracker von React Native, aber die vorgeschlagenen Lösungen wirken wie fiese Hacks.
react-native Verwendet flex für die Größen und Positionen der Elemente. Ich bin mir nicht sicher, kann aber sein flex-basis ist, was Sie brauchen: Check Dies und Dies
– Alioguschan
26. November 2015 um 13:38 Uhr
Und gem dieses Problem etwas wie flex: 0.8 kann die Arbeit machen.
– Alioguschan
26. November 2015 um 13:46 Uhr
GollyJer
Ab React Native 0.42 height: und width: Prozentzahlen akzeptieren.
Verwenden width: 80% in Ihren Stylesheets und es funktioniert einfach.
Wenn Sie die Eingabe einfach relativ zur Bildschirmbreite vornehmen möchten, wäre eine einfache Möglichkeit, Dimensions zu verwenden:
// De structure Dimensions from React
var React = require('react-native');
var {
...
Dimensions
} = React;
// Store width in variable
var width = Dimensions.get('window').width;
// Use width variable in style declaration
<TextInput style={{ width: width * .8 }} />
Ich habe ein Arbeitsprojekt eingerichtet hier. Code ist auch unten.
Die React Native-Dokumentation sollte das Dimensions-Paket auf der Titelseite erwähnen – das wundert mich nicht …
– AA Karim
17. August 2016 um 10:48 Uhr
sehr wertvolle Antwort. Abmessungen ist eigentlich sehr nützlich. Hinweis: „Obwohl Abmessungen sofort verfügbar sind, können sie sich ändern (z. B. aufgrund einer Gerätedrehung), sodass jede Rendering-Logik oder Stile, die von diesen Konstanten abhängen, versuchen sollten, diese Funktion bei jedem Rendering aufzurufen, anstatt den Wert zwischenzuspeichern (z. B. using Inline-Stile, anstatt einen Wert in einem StyleSheet festzulegen).”
– Phil
14. März 2018 um 9:52 Uhr
Beachten Sie, dass die Verwendung von Dimensionen Ihre Layouts nach der Bildschirmdrehung unterbricht, wenn Sie das Querformat unterstützen und diese Layoutänderungen nicht manuell handhaben.
– ratsimihah
4. September 2018 um 11:09 Uhr
Geben Sie in Ihrem StyleSheet einfach Folgendes ein:
Die Technik, die ich verwende, um die prozentuale Breite des übergeordneten Elements zu erhalten, besteht darin, eine zusätzliche Abstandshalteransicht in Kombination mit einer Flexbox hinzuzufügen. Dies gilt nicht für alle Szenarien, kann aber sehr hilfreich sein.
Grundsätzlich ist die Flex-Eigenschaft die Breite relativ zur “Gesamt”-Flex aller Elemente im Flex-Container. Wenn also alle Elemente zusammen 100 ergeben, haben Sie einen Prozentsatz. Im Beispiel hätte ich die Flex-Werte 6 & 4 für dasselbe Ergebnis verwenden können, also ist es noch flexibler.
Wenn Sie die prozentuale Breitenansicht zentrieren möchten: Fügen Sie zwei Abstandshalter mit halber Breite hinzu. Im Beispiel wäre es also 2-6-2.
Natürlich ist das Hinzufügen der zusätzlichen Ansichten nicht die schönste Sache der Welt, aber in einer realen App kann ich mir vorstellen, dass der Abstandshalter andere Inhalte enthält.
Ich habe eine aktualisierte Lösung (Ende 2019), um eine Elternbreite von 80 % zu erhalten Responsive mit Hooks Es funktioniert auch, wenn sich das Gerät dreht.
Sie können verwenden Dimensions.get('window').width Um die Gerätebreite in diesem Beispiel zu erhalten, können Sie sehen, wie Sie es Responsive tun können
react-native
Verwendetflex
für die Größen und Positionen der Elemente. Ich bin mir nicht sicher, kann aber seinflex-basis
ist, was Sie brauchen: Check Dies und Dies– Alioguschan
26. November 2015 um 13:38 Uhr
Und gem dieses Problem etwas wie
flex: 0.8
kann die Arbeit machen.– Alioguschan
26. November 2015 um 13:46 Uhr