color:‘red’,
}
});
六 高度与宽度
指定宽高
在样式中指定固定的width和height。React Native中的尺寸都是无单位的,表示的是与设备像素密度无关的逻辑像素点。(dp)
<View style={{width: 50, height: 50, backgroundColor: ‘powderblue’}} />
弹性宽高(Flex)
在组件样式中使用flex
可以使其在可利用的空间中动态地扩张或收缩。一般而言我们会使用flex:1
来指定某个组件扩张以撑满所有剩余的空间。
组件能够撑满剩余空间的前提是其父容器的尺寸不为零。如果父容器既没有固定的width和height,也没有设定flex,则父容器的尺寸为零。其子组件如果使用了flex,也是无法显示的。
此时子控件除非强制制定width height 才能显示
// 试试去掉父View中的flex: 1
。
// 则父View不再具有尺寸,因此子组件也无法再撑开。
// 然后再用height: 300
来代替父View的flex: 1
试试看?
<View style={{flex: 1}}>
<View style={{flex: 1, backgroundColor: ‘powderblue’}} />
<View style={{flex: 2, backgroundColor: ‘skyblue’}} />
<View style={{flex: 3, backgroundColor: ‘steelblue’}} />
七 使用Flexbox布局
flexDirection(方向) justifyContent(主轴分布方式) alignItems(次轴分布方式)
使用flexbox规则来指定某个组件的子元素的布局。
一般来说,使用flexDirection、alignItems和 justifyContent三个样式属性就已经能满足大多数布局需求。译
React Native中的Flexbox的工作原理和web上的CSS基本一致,当然也存在少许差异。首先是默认值不同:flexDirection的默认值是column而不是row,而flex也只能指定一个数字值。
Flex Direction
在组件的style中指定flexDirection可以决定布局的主轴。子元素是应该沿着水平轴(row)方向排列,还是沿着**竖直轴(column)**方向排列呢?默认值是竖直轴(column)方向。
// 尝试把flexDirection
改为column
看看
<View style={{flex: 1, flexDirection: ‘row’}}>
<View style={{width: 50, height: 50, backgroundColor: ‘powderblue’}} />
<View style={{width: 50, height: 50, backgroundColor: ‘skyblue’}} />
<View style={{width: 50, height: 50, backgroundColor: ‘steelblue’}} />
Justify Content(主轴)
在组件的style中指定justifyContent可以决定其子元素沿着主轴的排列方式。子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-start、center、flex-end、space-around以及space-between。
和Android新出的ConstraintLayout很相似是不是,因为ConstraintLayout就是模仿flexible 布局的产物
/ 尝试把justifyContent
改为center
看看
// 尝试把flexDirection
改为row
看看
<View style={{
flex: 1,
flexDirection: ‘column’,
justifyContent: ‘space-between’,
}}>
<View style={{width: 50, height: 50, backgroundColor: ‘powderblue’}} />
<View style={{width: 50, height: 50, backgroundColor: ‘skyblue’}} />
<View style={{width: 50, height: 50, backgroundColor: ‘steelblue’}} />
Align Items(次轴)
在组件的style中指定alignItems可以决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有**:flex-start、center、flex-end以及stretch。**
可参考[布局样式属性]:http://reactnative.cn/docs/0.44/layout-props.html
八 处理文本输入
最后
这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容
除了这份笔记,还给大家分享 Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。
分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~
喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!