La técnica que utilizo para tener un porcentaje de ancho del padre es agregar una vista de espaciador adicional en combinación con algo de flexbox. Esto no se aplicará a todos los escenarios, pero puede resultar muy útil.
Así que, aquí vamos:
class PercentageWidth extends Component {
render() {
return (
<View style={styles.container}>
<View style={styles.percentageWidthView}>
{/* Some content */}
</View>
<View style={styles.spacer}
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flexDirection: 'row'
},
percentageWidthView: {
flex: 60
},
spacer: {
flex: 40
}
});
Básicamente, la propiedad flex es el ancho relativo a la flexión "total" de todos los elementos del contenedor flexible. Entonces, si todos los elementos suman 100, tiene un porcentaje. En el ejemplo, podría haber usado valores flexibles 6 y 4 para el mismo resultado, por lo que es aún más FLEXible.
Si desea centrar la vista de ancho porcentual: agregue dos espaciadores con la mitad del ancho. Entonces, en el ejemplo sería 2-6-2.
Por supuesto, agregar las vistas adicionales no es lo mejor del mundo, pero en una aplicación del mundo real puedo imaginar que el espaciador contendrá contenido diferente.
react-native
usosflex
para los tamaños y posiciones de los elementos. No estoy seguro, pero es posible queflex-basis
sea lo que necesita: verifique esto y esto