React Native学习笔记(四)布局

前端之家收集整理的这篇文章主要介绍了React Native学习笔记(四)布局前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. 基本样式
    对于一个组件,定义组件的布局样式通过style属性来定义。
    例如:
<Text style = {{color: '#ff0000',fontSize: 15}}> 学习布局 </Text>

这里通过style属性,定义了Text文本的字体颜色和字体大小。这里第一个大括号是:JSX语法,第二个大括号是:javaScript对象,我们把需要定义的样式都以对象的方式写在这个大括号里。
我们也可以把一个样式赋给一个变量:然后传进去。
例如:

<Text style = {styles.textContent}> 测试 </Text>
// ...
const styles = StyleSheet.create({
  textContent: {
    color: '#ff0000',fontSize: 1,},});

这里我们使用React.StyleSheet创建了一个 JS对象,那么在组件上引用是这样的:style={{对象名称.对象属性}}。
知道组件中如何使用样式了以后,我们自然会想到一个组件都支持那些样式。此时我们可以通过查找一些手册去学习都有哪些样式,我们还可以通过编译器报的错误提示来查看。例如:我们随意写一个它不支持属性test。

const styles = StyleSheet.create({ textContent: { color: '#ff0000',test: 2,});


如上图,我们可以看到一些报错信息。在这些提示中给出了有效的样式提示
2. FlexBox布局
弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空间(主要是为了容纳所有类型的显示设备和屏幕尺寸)的能力。
flexBox是一个整体模块,而不是单一的一个属性。它们之中有一些是在父容器上设置,而有一些则是在子容器上设置。
flex布局涉及到了两个概念:主轴和纵轴。如下图示意:

??
主轴和纵轴的方向是受flexDirection属性影响的。如果flexDirection属性
为了方便表述,下面定义两个表述词:
container:定义为父容器,有些属性是作用在父容器上的,即需要设置在父容器上。
item:定义为子容器或当前容器(组件),有些属性是作用在当前容器上的,即需要设置在子容器上。
1)flex属性
flex属性是作用在item上的。当一个组件,定义了flex属性时,表示该元素是可伸缩的。当然flex的属性值是大于0的时候才伸缩,其小于和等于0的时候不伸缩。

<View style = {styles.container}>
        <View style = {styles.subContainer} >
            <View style = {styles.item1}>
              <Text style = {styles.textContent}> item1 </Text>
            </View>
            <View style = {styles.item2}>
              <Text style = {styles.textContent}> item2 </Text>
            </View>
            <View style = {styles.item3}>
              <Text style = {styles.textContent}> item3 </Text>
            </View>
          </View>
      </View>
const styles = StyleSheet.create({
  container: {
    flex: 1,subContainer: {
    flex: 1,flexDirection: 'row',item1: {
    flex: 1,height: 40,backgroundColor: '#ff0000',item2: {
    flex: 1,backgroundColor: '#00ff00',item3: {
    flex: 1,backgroundColor: '#0000ff',textContent: {
    color: '#ffffff',fontSize: 20,

如下图:

因为item1、item2、item3的flex属性都设置为1,所以它们都是可以伸缩布局的。flex也可以理解为权重。代表所占的比例。如上图它们的flex都设置为1时,它们是等宽的。如果设置它们的flex属性分别为:5:10:5,那么会得到如下的图:

2)flexDirection属性
flexDirection在React-Native中只有两个属性,一个是row(横向伸缩)和column(纵向伸缩)。在上面的设置中就已经运用到了flexDirection属性。subContainer定义的样式中就已经设置了flexDirection为row,设置了它为横向伸缩。该属性值默认是纵向伸缩的。
3)justifyContent属性
justifyContent属性定义Item在主轴上的对齐方式。它的可取值为[flex-start,flex-end,center,space-between,space-around]
例如:

<View style = {styles.container}>
            <View style = {styles.item1}>
              <Text style = {styles.textContent}> item1 </Text>
            </View>
            <View style = {styles.item2}>
              <Text style = {styles.textContent}> item2 </Text>
            </View>
            <View style = {styles.item3}>
              <Text style = {styles.textContent}> item3 </Text>
          </View>
      </View>
const styles = StyleSheet.create({
  container: {
    flex: 1,justifyContent: 'flex-start',item1: {
    width: 40,item2: {
    width: 40,item3: {
    width: 40,fontSize: 15,});


其他属性值如:flex-start,space-around


猜你在找的React相关文章