Parece que con el position:absolute
uso un elemento no se puede centrar usando justifyContent
o alignItems
. Existe una solución alternativa, marginLeft
pero no muestra lo mismo para todos los dispositivos, incluso si se utilizan dimensiones para detectar la altura y el ancho del dispositivo.
bottom: {
position: 'absolute',
justifyContent: 'center',
alignItems: 'center',
top: height*0.93,
marginLeft: width*0.18,
},
bottomNav: {
flexDirection: 'row',
},
Respuestas:
Envuelva al niño que desea centrar en una Vista y haga que la Vista sea absoluta.
<View style={{position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, justifyContent: 'center', alignItems: 'center'}}> <Text>Centered text</Text> </View>
fuente
StyleSheet
objeto:...StyleSheet.absoluteFillObject
. ver github.com/facebook/react-native/blob/master/Libraries/…View
ocupe TODO el espacio en el que se puede hacer clic en la pantalla? Por ejemplo, si tuviera un componente debajo de este absolutamente posicionadoView
, no podría registrar clics en él.pointerEvents='box-none'
para pasar los toques a través de la vista: github.com/facebook/react-native/issues/12360Si desea centrar un elemento en sí mismo, puede usar alignSelf :
Este es un ejemplo (tenga en cuenta que el logotipo principal es una vista con posición: relativa )
fuente
Puede centrar elementos absolutos proporcionando a la propiedad de la izquierda el ancho del dispositivo dividido por dos y restando la mitad del elemento que desea centrar el ancho.
Por ejemplo, su estilo podría verse así.
bottom: { position: 'absolute', left: (Dimensions.get('window').width / 2) - 25, top: height*0.93, }
fuente
measure(layout) { const { width } = layout; this.setState({ width: width }) } ... <View onLayout={(event) => { this.measure(event.nativeEvent.layout) }} ...
crear un ancho completo
View
conalignItems: "center"
hijos, entonces inserto deseada en el interior.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> ) } }
puede agregar propiedades como
bottom: 30
para el componente alineado en la parte inferior.fuente
Y agrega esto
fuente
Puedes probar el código
<View style={{ alignItems: 'center', justifyContent: 'center' }} > <View style={{ position: 'absolute', margin: 'auto', width: 50, height: 50 }} /> </View>
fuente
Realmente es muy simple. Utilice porcentaje para
width
yleft
propiedades. Por ejemplo:Lo
width
que sea esleft
igual(100% - width)/2
fuente