前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【React Native 安卓开发】----(Flexbox布局)【第二篇】

【React Native 安卓开发】----(Flexbox布局)【第二篇】

作者头像
先知先觉
发布2019-01-21 15:02:03
5950
发布2019-01-21 15:02:03
举报

提示:在运行一个嵌入了RN的工程里面 需要先进入到工程根目录运行 npm start 然后运行工程在模拟器上 每次改动js文件保存后,点击两次R键,就可直接刷新项目。如果是真机摇一摇选择load js 即可更新

Flexbox是什么?

Flexbox:用来指定某个子元素布局,Flexbox可以在不同屏幕尺寸上提供一致的布局结构。 个人理解类似于安卓中的RelativeLayout,只是类似,便于安卓小伙伴方便理解。 下面先看一下运行后的结果,贴出了js代码:

代码语言:javascript
复制
import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput
} from 'react-native';

class hello extends Component{
  render(){
    return(
      <View style = {{flex:1}}>
          <View style={{width:50,height:50,backgroundColor:'powderblue'}}/>
          <View style={{width:50,height:50,backgroundColor:'skyblue'}}/>
          <View style={{width:50,height:50,backgroundColor:'steelblue'}}/>
      </View>
    );
  }
};

AppRegistry.registerComponent('hello', () => hello);
这里写图片描述
这里写图片描述

Flexbox容器三个重要属性

flexDirection, justifyContent, alignItems 有个这三个属性我们就能实现子元素任意摆放。 接下来让我们一一探索一下。

flexDirection

在组件的style中指定flexDirection可以决定布局的主轴。 flexDirection:’row’ 横向 flexDirection:’column’ 纵向 默认是column

代码语言:javascript
复制
style = {{flex:1,flexDirection:'row'}}
这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column'}}
这里写图片描述
这里写图片描述

从这张图可以看出来和我们第一张一样,可以说明flexDirection不写默认是column。

justifyContent

justifyContent是确定子元素在主轴上的位置,是在中间,在起始点还是终点。有flex-start、center、flex-end、space-around以及space-between我们一一分析。

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'center'}}

从代码中可以看出我们主轴是纵向的,主轴上的位置为center

这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'flex-start'}}
这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'flex-end'}}
这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'space-around'}}

space-around是在主轴上平均分布比例1:1:1

这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'space-between'}}
这里写图片描述
这里写图片描述

space-between是将首尾占据之后,在这两个之间平分。 <—————————————————————————>

alignItems

alignItems是确定子元素在辅轴上的位置,所谓辅轴就是与主轴垂直的轴。分别有flex-start、center、flex-end以及stretch。 下面让我们看看效果。

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'center',alignItems:'center'}}
这里写图片描述
这里写图片描述

这里主轴是纵轴,主轴上的位置是居中,辅轴上的位置也是居中。 <—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'center',alignItems:'flex-start'}}
这里写图片描述
这里写图片描述

<—————————————————————————>

代码语言:javascript
复制
style = {{flex:1,flexDirection:'column',justifyContent:'center',alignItems:'flex-end'}}
这里写图片描述
这里写图片描述

<—————————————————————————> 最后一个是stretch–填充。这个是最麻烦的。首先当你直接设置alignItems:’stretch’发现没有出校填充的效果。这是因为你需要把对应的宽高限制去掉才会有显示。比如当你主轴是纵轴那你需要把宽去掉才有效果,如果主轴是横轴需要把高度去掉。如下代码和图片便于理解。

代码语言:javascript
复制
 <View style = {{flex:1,flexDirection:'column',justifyContent:'center',alignItems:'stretch'}}>
          <View style={{height:50,backgroundColor:'powderblue'}}/>
          <View style={{height:50,backgroundColor:'skyblue'}}/>
          <View style={{height:50,backgroundColor:'steelblue'}}/>
      </View>
这里写图片描述
这里写图片描述

这里我的主轴是纵轴 所以我把宽度取消。 想要更有体会,自己可以一个个属性切换体验一下。

Flexbox伸缩项目的属性

这里大家可能会混乱那上面的属性是什么。上面是Flexbox容器的属性,下面要介绍的是容器里面具体项目使用到的属性。

order

定义项目的排列顺序,数值越小排列越靠前,默认为0,语法order: 整数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flexbox是什么?
  • Flexbox容器三个重要属性
    • flexDirection
      • justifyContent
        • alignItems
        • Flexbox伸缩项目的属性
          • order
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档