A técnica que uso para obter a largura percentual do pai é adicionar uma visualização de espaçador extra em combinação com algum flexbox. Isso não se aplica a todos os cenários, mas pode ser muito útil.
Aqui vamos nos:
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
}
});
Basicamente, a propriedade flex é a largura relativa ao flex "total" de todos os itens no flex container. Portanto, se todos os itens somam 100, você tem uma porcentagem. No exemplo, eu poderia ter usado os valores flex 6 e 4 para o mesmo resultado, então é ainda mais FLEXível.
Se você deseja centralizar a visualização da largura percentual: adicione dois espaçadores com metade da largura. Portanto, no exemplo seria 2-6-2.
É claro que adicionar visualizações extras não é a coisa mais legal do mundo, mas em um aplicativo do mundo real, posso imaginar que o espaçador terá conteúdo diferente.
react-native
usaflex
para tamanhos e posições dos elementos. Não tenho certeza, mas pode ser oflex-basis
que você precisa: Verifique isto e isto