首先看完阮一峰的Flex布局教程
1.Flex屬性
class AwesomeProject extends Component {
render() {
return (
<View style={styles.test}>
<View style={styles.test1}></View>
<View style={styles.test1}></View> <View style={styles.test2}></View>
</View>
);
}
}
var styles = StyleSheet.create({
test: {
flex:1,
borderWidth:5,
borderColor:'gray'
},
test1:{
flex:5,
height:40,
borderWidth:5,
borderColor:'blue'
},
test2:{
flex:10,
borderWidth:5,
borderColor:'red'
},
test3:{
}
});
當一個(元素)組件,定義了flex屬性時髓霞,表示該元素是可伸縮的。當然flex的屬性值是大于0的時候才伸縮,其小于和等于0的時候不伸縮邑闺,例如:flex:0, flex:-1等。上面的代碼棕兼,最外層的view是可伸縮的陡舅,因為沒有兄弟節(jié)點和它搶占空間。里層是3個view,可以看到三個view的flex屬性加起來是5+5+10=20,所以第一個view和第二個view分別占1/4伸縮空間伴挚, 最后一個view占據(jù)1/2空間靶衍。
因此,我們看到的布局圖如下
2.flexDirection
flexDirection在React-Native中只有兩個屬性茎芋,一個是row(橫向伸縮)和column(縱向伸縮)颅眶;
row(默認值):主軸為水平方向,起點在左端
column:主軸為垂直方向败徊,起點在上沿
class AwesomeProject extends Component {
render() {
return (
<View style={styles.test}>
<View style={styles.test1}>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
</View>
<View style={styles.test2}>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
<View style={styles.test3}></View>
</View>
<View style={styles.test2}></View> </View>
);
}
}
var styles = StyleSheet.create({
test: {
flex:1,
borderWidth:5,
borderColor:'gray'
},
test1:{
flex:5,
flexDirection:'row',
borderWidth:5,
borderColor:'blue'
},
test2:{
flex:5,
flexDirection:'column',
borderWidth:5,
borderColor:'blue'
},
test3:{
width:20,
height:20,
borderRadius:20,
backgroundColor:'green',
}
}
);
效果如下圖:
以下屬性可自己嘗試:
flexWrap('wrap','nowrap')
alignItems('flex-start','flex-end','center','stretch')
alignSelf('auto','flex-start','flex-end','center','stretch')
justifyContent('flex-start','flex-end','center','space-between','space-around')