问题
I'm new in react-native, and I'm trying to divide screen to tow part, the first part is the header or the navigation bar wish have a specific height about 40px the second part is the body or the content of the app wish his height must be the available height on the phone screen, I tried to use flex box method but it's not working! That's my code:
<View style={styles.mainContainer}>
<View style={styles.navBar}>
</View>
<View style={styles.body}>
</View>
</View>
Style:
mainContainer: {
height: '100%',
display: 'flex',
flexDirection: 'column',
},
navBar: {
display: 'flex',
flexDirection: 'row-reverse',
justifyContent: 'space-between',
alignItems: 'center',
backgroundColor: '#f1f1f1',
height: 30,
},
body: {
flex: 3,
display: 'flex',
},
回答1:
just use this way, i hope this will work.
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF'}}>
<View style={{flex:1, backgroundColor:"green"}}>
<Text>hello world 1.........</Text>
<Text>hello world 1.........</Text>
<Text>hello world 1.........</Text>
<Text>hello world 1.........</Text>
</View>
<View style={{flex:1, backgroundColor:"yellow"}}>
<Text>hello world 2.........</Text>
<Text>hello world 2.........</Text>
<Text>hello world 2.........</Text>
<Text>hello world 2.........</Text>
</View>
</View>
回答2:
Your code works perfectly fine. See it running on Snack at: https://snack.expo.io/S1LHFmFyG
It's likely that you use an older version of React Native that doesn't support percentages. They landed early this year so you need RN v0.42.3 or later in order to use them.
On a side note, there's a few unnecessary lines of code there in case you would like to make it more DRY. You don't need to declare display as it's flex by default, flexDirection is also set to column by default, and if you want a stripe of 40px your height should be 40 but I'm sure you're aware of that.
来源:https://stackoverflow.com/questions/47295141/how-to-divide-screen-to-two-parts-in-react-native