1. 程式人生 > 其它 >Android FlexBoxLayout 彈性盒子佈局

Android FlexBoxLayout 彈性盒子佈局

前言

FlexBoxLayout是谷歌前幾年開源的一個控制元件,使用起來很方便。顧名思義他是一個彈性的、可伸縮的佈局,應用場景也有很多,如:搜尋頁的搜尋歷史標籤流式展示;動態新增view等。

前段時間專案中正好有用到此佈局,特地總結一下。

使用方法

1.build.gradle(app)中新增依賴

implementation 'com.google.android:flexbox:1.1.0'

2.佈局中就可以直接引用了

<com.google.android.flexbox.FlexboxLayout
        android:layout_width="match_parent"
        android:layout_height
="match_parent"> </com.google.android.flexbox.FlexboxLayout>

控制佈局屬性

一、flexDirection 該屬性控制佈局方向,其值有4個:

 1.row 設定方向為水平方向,起點在左側(預設值)

 2.row-reverse 設定方向為水平方向,起點在右側

 3.column 設定方向為垂直方向,起點在頂部

 4.column-reverse 設定方向為垂直方向,起點在底部

二、flexWrap 該屬性控制佈局是否換行,其值有3個:

 1.nowrap 設定為不換行

 2.wrap 正常方向換行

 
3.wrap-reverse 反方向換行

三、justifyContent 該屬性控制佈局的對齊方式,其值有5個:

 1.flex-start 左對齊(預設值)

 2.flex-end 右對齊

 3.center 居中對齊

 4.space-between 兩端對齊

 5.space-around 間隔相等對齊,相當於LinerLayout中的weight屬性

四、alignContent 多行對齊方式(單行不起作用),其值有6個:

 1.flex-start 左對齊

 2.flex-end 右對齊

 3.center 居中對齊

 4.space-between 兩端對齊

 
5.space-around 間隔相等對齊,相當於LinerLayout中的weight屬性  6.stretch 充滿布局的高度,需要alignItems的值也為stretch才生效(預設值)

五、alignItems 反向對齊方式(例如當前佈局是橫向的,那麼alignItems則是設定縱向對齊方式),其值有5個:

 1.flex-start 左對齊

 2.flex-end 右對齊

 3.center 居中對齊

 4.baseline 第一行內容的基線對齊

 5.stretch 如果item沒設定高度,則自動充滿布局(預設值)

控制子元素屬性

一、layout_order 該屬性可以改變子元素的排列順序,預設值是1

二、layout_flexGrow 該屬性空著子元素的放大比例

三、layout_flexShrink 該屬性控制子元素縮小比例

四、layout_alignSelf 該屬性控制子元素的對齊方式,跟上面佈局屬性alignItems基本上是一樣,唯一區別是layout_alignSelf可以設定單個子元素,而alignItems設定的全部子元素。其值有6個:

 1.flex-start 左對齊

 2.flex-end 右對齊

 3.center 居中對齊

 4.baseline 第一行內容的基線對齊

 5.stretch 如果item沒設定高度,則自動充滿布局
 
 6.auto 自動,如果值為auto則會繼承alignItems,反之則會覆蓋(預設值)

五、layout_flexBasisPercent 該屬性為子元素的長度跟他父佈局的一個百分比,設定完此屬性會覆蓋父佈局寬或高,但父佈局只有設定了長度時此屬性才會生效。

六、layout_minWidth、layout_minHeight 該屬性會強制子元素不會小於最小值,設定完layout_flexShrink(縮小比例)也不會超過最小值。

七、layout_maxWidth、layout_maxHeight 該屬性會強制子元素不會小於最大值,設定完layout_flexGrow(放大比例)也不會超過最大值。

八、layout_wrapBefore 該屬性會控制子元素強制換行,預設值是false,如果設定為true,則當前子元素不受flex_wrap(換行屬性)的控制。

以上就是總結的彈性佈局,有錯誤地方還請指出!

Demo和圖片就暫時不附加了,如有需要請留言。

整理不易,轉載請註明出處,謝謝!!