上一篇文章中介绍了基本组件的使用 React Native入门教程(笔记) 2 – 基本组件使用及样式

本节内容将继续沿用facebook官方例子介绍如何使用Flexbox布局把界面设计的多样化。

转载请注明出处:http://blog.csdn.net/wingichoy/article/details/51811866

Flexbox

Flex布局意思为弹性布局,他使用起来非常的方便。

他主要有以下几种属性

flexDirection //设置主轴方向

flexWrap //设置是否换行

justifyContent //主轴对齐方式

alignItems //交叉轴对齐方式

我们将上一篇中的布局样式修改一下,来介绍flex布局的主要属性。

1.flexDirection

可以看到Text和Image是竖直排列的,下面将其改为水平排列,只需要在style添加一行

flexDirection:'row'

即可

如图所示,要决定主轴的方向(水平、垂直),可以按照如下设置

flexDirection:'row' //主轴水平

flexDirection:'column '//主轴垂直

2.flexWrap

这个属性用于设置是否换行,默认为nowrap,即不换行,为了演示,将图片改小,添加多几个Text。



此时,添加flexWrap属性

flexWrap:'wrap',



发现已经成功换行。

如图所示,要决定是否换行,可以按照如下设置

flexWrap:'wrap' //设置换行
flexWrap:'nowrap'//设置不换行

3.justifyContent

这个属性用于视图在主轴上的对其方式,主要有如下几种

justifyContent:'flex-start' //开头对齐
justifyContent:'flex-end' //末尾对齐
justifyContent:'center' //居中
justifyContent:'space-between' //均匀分布
justifyContent:'space-around' //每个视图两侧padding一样

顺序效果如下:

flex-start

flex-end

space-between

space-around

注意仔细区分between和around的区别。

4.alignItems

这个属性是指主轴的交叉轴的对其方式(X,Y轴对应),主要有以下几种

alignItems: 'flex-start'  //开头对齐
alignItems: 'flex-end' //末尾对齐
alignItems: 'center' //居中对齐
alignItems: 'stretch' //默认值充满整个容器

顺序效果如下:

flex-start

flex-end

center

stretch

为了区分我给text加了背景 注意其细微的区别

到此,Flex的常用属性就已经介绍完毕了,如果你想要了解更多,不妨参考这篇文章

学以致用

下面我们设计以下布局,将文字放到海报的右方。因为整体水平排列,内部垂直排列,所以我们需要多加一个容器将两个Text包裹起来(Android对比LinearLayout嵌套)。修改之后的代码如下:

class WingProject extends Component {
render() {
var movie = MOVIES_DATA[0];
return (
<View style={styles.container}>
<Image source={{uri:movie.img}}
style = {styles.image}
/>
//将两个Text用新的容器包裹起来,新容器的style为rightContainer
<View style={styles.rightContainer}>
<Text style = {styles.title}>{movie.title}</Text>
<Text style = {styles.title}>{movie.year}</Text>
</View> </View>
);
}
}

style如下

const styles = StyleSheet.create({
container: {
flex:1,
//主轴水平排列
flexDirection:'row',
//对其方式居中
justifyContent: 'center',
//交叉轴居中
alignItems:'center',
backgroundColor: '#F5FCFF',
},
image:{
width:400,
height:600,
},
title:{
padding:5,
fontSize:20,
},
rightContainer:{
//设置右容器为竖直排列
flexDirection:'column'
}
});

现在界面已经如下所示了:

嗯嗯 感觉不错。今天就到这里吧。

如果你喜欢我的博客,请评论或者点击关注,谢谢!

参考文章:http://facebook.github.io/react-native/docs/sample-application-movies.html

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

下一篇:React Native入门教程 4 – 从服务器获取信息

React Native入门教程 3 -- Flex布局的更多相关文章

  1. React Native入门教程2 -- 基本组件使用及样式

    在上一篇文章中,我们学会了如何搭建React Native的环境(React Native入门教程(笔记) 1 – 开发环境搭建),不知道你们是否搭建好了呢,如果还没有,那么快动起小手,来体验RN带给 ...

  2. React Native入门教程 1 -- 开发环境搭建

    有人问我为啥很久不更新博客..我只能说在学校宿舍真的没有学习的环境..基本上在宿舍里面很颓废..不过要毕业找工作了,我要渐渐把这个心态调整过来,就从react-native第一篇博客开始.话说RN也出 ...

  3. React Native入门——布局实践:开发京东client首页(一)

    有了一些对React Native开发的简单了解,让我们从实战出发.一起来构建一个简单的京东client. 这个client是仿照之前版本号的京东client开发的Android版应用,来源于CSDN ...

  4. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  5. React Native填坑之旅--布局篇

    代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN ...

  6. 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

    http://blog.csdn.net/xiaominghimi/article/details/51586492 一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解R ...

  7. 基于Nodejs生态圈的TypeScript+React开发入门教程

    基于Nodejs生态圈的TypeScript+React开发入门教程   概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...

  8. React Native入门-刘望舒

    React Native入门(一)环境搭建与Hello World React Native入门(二)Atom+Nuclide安装.配置与调试 React Native入门(三)组件的Props(属性 ...

  9. React实例入门教程(1)基础API,JSX语法--hello world

      前  言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发 ...

随机推荐

  1. java客户端Jedis操作Redis Sentinel 连接池

    pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...

  2. Button 使用Command 按钮置灰未更新

    当Button绑定了Command,按钮在窗口弹出.或者其它事件时,会自动置灰. 有时,异步执行时间较长时,界面一些绑定了命令的Button,State不会变化,会一直置灰. 直到再次转移Focus. ...

  3. SAS中常见的数组函数

    SAS中常见的数组函数有: dim dimk hbound hboundk lbound lboundk 数组函数计萁数组的维数.上下界,有利于写出可移植的程序,数组函数包括:dim(x) 求数组x第 ...

  4. 进程间通信——XSI IPC之消息队列

    进程间通信XSI IPC有3种:消息队列.共享内存.信号量.它们之间有很多相似之处,但也有各自的特殊的地方.消息队列作为其中比较简单的一种,它会有些什么东西呢,来一起探讨探讨.. 消息队列结构 消息队 ...

  5. Node.js 全局对象介绍

    全局对象 这些对象在所有模块里都可用.有些对象不是在全局作用域而是在模块作用域里,这些情况下面文档都会标注出来. global {Object} 全局命名空间对象. 浏览器里,全局作用域就是顶级域.如 ...

  6. Python3 XML解析

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 你可以通过本站学习XML教程 ...

  7. Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)

    1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的 ...

  8. linux内存管理初始化

    内存管理子系统是linux内核最核心最重要的一部分,内核的其他部分都需要在内存管理子系统的基础上运行.而对其初始化是了解整个内存管理子系统的基础.对相关数据结构的初始化是从全局启动例程start_ke ...

  9. Android广播的发送与接收

    Android广播的发送与接收 效果图 广播发送 广播分为有序广播和无序广播 有序广播与无序广播的区别 无序广播:只要是广播接收者指定了接收的事件类型,就可以接收到发送出来的广播消息.不能修改消息. ...

  10. Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...