Это должно быть хорошо:
export default function App() {
return (
<View style={{flex: 1}}>
<View style={styles.topContainer}>
<TouchableHighlight >
<Text> CAMERA </Text>
</TouchableHighlight>
</View>
<View style={{flex: 1}}>
<View style={styles.buttonRowContainer}>
<TouchableHighlight style={styles.touchableContainer} >
<Text > Lane assistant </Text>
</TouchableHighlight>
<TouchableHighlight style={styles.touchableContainer} >
<Text>disconnect </Text>
</TouchableHighlight>
<TouchableHighlight style={styles.touchableContainer} >
<Text > driving info </Text>
</TouchableHighlight>
</View>
<View style={styles.buttonRowContainer}>
<TouchableHighlight style={styles.touchableContainer} >
<Text >- </Text>
</TouchableHighlight>
<TouchableHighlight style={styles.touchableContainer} >
<Text > cruise control </Text>
</TouchableHighlight>
<TouchableHighlight style={styles.touchableContainer} >
<Text >+ </Text>
</TouchableHighlight>
</View>
</View>
</View>
);
}
const styles = StyleSheet.create({
buttonRowContainer: {
flex: 1, flexDirection: 'row'
},
touchableContainer: {
flex: 1, justifyContent: 'center', alignItems: 'center'
},
topContainer: {
flex: 1, justifyContent: 'center', alignItems: 'center'
}
})
Я собираюсь объяснить, как работает flex. Если у вас есть только один элемент с flex: 1
, он займет все пространство экрана. Обычно это делается, когда у вас есть вид, который будет содержать все остальные элементы. Если мы хотим разделить экран на два, мы должны определить 2 компонента с flex: 1
- Main -> flex: 1
- Children 1 -> flex: 1
- Children 2 -> flex: 1
Дети 1 будут занимать 50% размера экрана, а также Дети 2. Если мы хотим дети 1 чтобы занять 66% экрана мы просто добавляем flex: 2
. Это все равно, что сказать React: «Эй, я хочу, чтобы ты разделил экран на 3 равные части. Дети 1 занимают 2 части экрана, а Дети 2 - только 1». Помните, что это будет работать, только если ваш родитель установил flex.