简介
FlexboxLayout
是 Google 推出的一个布局,它的作用就和 LinearLayout
相似,如果只是功能相似的话,那个谷歌就没有推出他的必要性了,他是一个聪明的布局,他和LinearLayout
最大的区别就是能够换行,并且可以和 RecyclerView
无缝使用,今天我们就一点点的来介绍一下这个布局
使用方式
- 添加依赖
compile 'com.google.android:flexbox:0.3.0'
2.在布局中使用
<com.google.android.flexbox.FlexboxLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.google.android.flexbox.FlexboxLayout>
这个布局的最新版本、用法大家可以去 Github 上去看,点这里
注: 0.3.0 或以上版本才可以与 RecyclerView
配合使用
主要的几个属性
flexDirection 属性
这个属性的作用就和 LinearLayout
的 orientation
属性类似,用来控制视图显示是横向还是竖向row
:默认值 表示横向排列row_reverse
:表示横向排列,但是是从右往左排column
:表示竖向排列column_reverse
:表示竖向排列,从下到上排列
flexWrap 属性
这个属性是表示换不换行,因为这个控件默认是不会换行的nowrap
:默认值 不会换行wrap
:换行wrap
:换行,但是排列顺序是反的
alignItems 属性
这是属性是表示各个 View 的对齐方式,这个控件默认的对齐方式是 View 高或宽是一样的,怎讲呢,如果你的排列方式是横向的,那么每个子控件的宽都是一样宽的,但是你的排列方式是竖向的,那么每个子控件的高是相同的stretch
:默认值 表示子控件的高或宽相同flex_start
:左对齐/上对齐 这里它是根据 flexDirection
属性的值不同会有响应变化flex_end
:右对齐/下对齐center
:根据中线居中对齐baseline
:根据内容对齐,和 ConstraintLayout
里面那个对齐有一点类似的意思
justifyContent 属性
这个属性是表示在主轴上的排列方式,再控件无法排列满整个布局时flex_start
:默认值 整体控件都连在一起排列在上方,或下方center
:控件都连在一起,居中排列flex_end
:整体控件都连在一起排列在上方,或下方space_around
:控件都分散开排列,第一个控件,与最后一个控件与父容器有间隔space_between
:遇上一个属性类似,差别在第一个控件,与最后一个控件是贴在父容器边上的
alignContent 属性
此属性与上一个属性是类似的,当开启了换行,由于显示了多行主轴就可能发生了变化,所以效果也会产生变换,当前这个属性就是针对多轴的情况而使用的属性flex_start
:默认值 整体控件都连在一起排列在上方,或下方center
:控件都连在一起,居中排列flex_end
:整体控件都连在一起排列在上方,或下方space_around
:控件都分散开排列,第一个控件,与最后一个控件与父容器有间隔space_between
:遇上一个属性类似,差别在第一个控件,与最后一个控件是贴在父容器边上的