Es scheint, dass bei position:absolute
Verwendung ein Element nicht mit justifyContent
oder zentriert werden kann alignItems
. Es gibt eine Problemumgehung, die marginLeft
jedoch nicht für alle Geräte gleich angezeigt wird, selbst wenn Abmessungen zum Erkennen von Höhe und Breite des Geräts verwendet werden.
bottom: {
position: 'absolute',
justifyContent: 'center',
alignItems: 'center',
top: height*0.93,
marginLeft: width*0.18,
},
bottomNav: {
flexDirection: 'row',
},
Antworten:
Wickeln Sie das gewünschte Kind in eine Ansicht ein und machen Sie die Ansicht absolut.
quelle
StyleSheet
Objekt hängen :...StyleSheet.absoluteFillObject
. siehe github.com/facebook/react-native/blob/master/Libraries/…View
gesamten anklickbaren Platz auf dem Bildschirm aus? Wenn ich beispielsweise eine Komponente darunter hätte, die absolut positioniert istView
, könnte ich keine Klicks darauf registrieren.pointerEvents='box-none'
, um die Berührungen durch die Ansicht zu leiten : github.com/facebook/react-native/issues/12360Wenn Sie ein Element selbst zentrieren möchten, können Sie alignSelf verwenden :
Dies ist ein Beispiel (Beachten Sie, dass das übergeordnete Logo eine Ansicht mit der Position "relativ" ist. )
quelle
Sie können absolute Elemente zentrieren, indem Sie der linken Eigenschaft die Breite des Geräts durch zwei teilen und die Hälfte des Elements abziehen, das Sie zentrieren möchten.
Zum Beispiel könnte Ihr Stil ungefähr so aussehen.
quelle
measure(layout) { const { width } = layout; this.setState({ width: width }) } ... <View onLayout={(event) => { this.measure(event.nativeEvent.layout) }} ...
eine volle Breite erstellen
View
mitalignItems: "center"
dann gewünschten Kindern innerhalb Einsatzes.Sie können Eigenschaften wie
bottom: 30
für unten ausgerichtete Komponenten hinzufügen .quelle
Sie können den Code ausprobieren
quelle
Und füge das hinzu
quelle
Es ist wirklich sehr einfach. Verwenden Sie den Prozentsatz für
width
undleft
Eigenschaften. Beispielsweise:Was auch immer
width
ist, istleft
gleich(100% - width)/2
quelle