ReactNative之View组件分行显示Item,子控件超出宽度自动换行。

需求产生:这个需求呢是做属性气泡的时候产生的,比如热搜推荐的推荐气泡数量就不一定,所以要分行显示。

如果大家认真阅读了flexbox的布局教程,那么应该会注意到flexWrap这个属性。这个就是换行的属性。

RN的View直接就支持分行显示:
flexWrap容器属性: `nowrap | wrap | wrap-reverse`
flexWrap容器属性:
nowrap-不分行
wrap-分行
wrap-reverse - 分行从下往上排列


3:在React中,Flexbox有6种容器属性,6种项目属性。而在React Native中,有4个容器属性,2个项目属性,分别是:
容器属性:flexDirection   flexWrap   justifyContent  alignItems
项目属性:flex  alignSelf
3.1: flexDirection容器属性: `row | row-reverse | column | column-reverse`
该属性决定主轴的方向(即项目的排列方向)。
row:主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column(默认值):主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.2:flexWrap容器属性: `nowrap | wrap | wrap-reverse`
默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.2.1 nowrap(默认值):不换行
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.2.2 wrap:换行,第一行在上方
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。

 
3.2.3 wrap-reverse:换行,第一行在下方。(和wrap相反)
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.3:justifyContent容器属性:`flex-start | flex-end | center | space-between | space-around`
定义了伸缩项目在主轴线的对齐方式
flex-start(默认值):伸缩项目向一行的起始位置靠齐。
flex-end:伸缩项目向一行的结束位置靠齐。
center:伸缩项目向一行的中间位置靠齐。
space-between:两端对齐,项目之间的间隔都相等。
space-around:伸缩项目会平均地分布在行里,两端保留一半的空间。
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.4:alignItems容器属性:`flex-start | flex-end | center | baseline | stretch`
定义项目在交叉轴上如何对齐,可以把其想像成侧轴(垂直于主轴)的“对齐方式”。
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐 。
center:交叉轴的中点对齐。
baseline:项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
 
3.5:flex项目属性:
“flex-grow”、“flex-shrink”和“flex-basis”三个属性的缩写, 其中第二个和第三个参数(flex-shrink、flex-basis)是可选参数。默认值为“0 1 auto”。
宽度 = 弹性宽度 * ( flexGrow / sum( flexGorw ) )
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。
3.6:alignSelf项目属性:
“auto | flex-start | flex-end | center | baseline | stretch”
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。
默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
ReactNative之View组件分行显示Item,子控件超出宽度自动换行。