Es scheint, dass mit position:absolute
In Verwendung kann ein Element nicht mit justifyContent
oder alignItems
zentriert werden. Es gibt eine Problemumgehung für die Verwendung von marginLeft
, die jedoch nicht für alle Geräte angezeigt wird, selbst wenn Abmessungen zum Ermitteln der 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',
},
Wickeln Sie das gewünschte Kind in eine Ansicht ein und machen Sie die Ansicht absolut.
<View style={{position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, justifyContent: 'center', alignItems: 'center'}}>
<Text>Centered text</Text>
</View>
Sie können absolute Elemente zentrieren, indem Sie für die Eigenschaft left die Breite des Geräts durch zwei dividieren und die Hälfte des Elements abziehen, dessen Breite Sie zentrieren möchten.
Ihr Stil könnte beispielsweise so aussehen.
bottom: {
position: 'absolute',
left: (Dimensions.get('window').width / 2) - 25,
top: height*0.93,
}
erstelle ein View
mit voller Breite mit alignItems: "center"
und füge dann die gewünschten Kinder ein.
import React from "react";
import {View} from "react-native";
export default class AbsoluteComponent extends React.Component {
render(){
return(
<View style={{position: "absolute", left: 0, right: 0, alignItems: "center"}}>
{this.props.children}
</View>
)
}
}
sie können Eigenschaften wie bottom: 30
für unten ausgerichtete Komponenten hinzufügen.
Es ist wirklich sehr einfach. Verwenden Sie den Prozentsatz für die Eigenschaften width
und left
. Zum Beispiel:
logo : {
position: 'absolute',
top : 50,
left: '30%',
zIndex: 1,
width: '40%',
height: 150,
}
Was auch immer width
ist, left
ist (100% - width)/2
Sie können den Code ausprobieren
<View
style={{
alignItems: 'center',
justifyContent: 'center'
}}
>
<View
style={{
position: 'absolute',
margin: 'auto',
width: 50,
height: 50
}}
/>
</View>