AndroidフレックスレイアウトFlexboxLayoutについて
テキストリンク:https://mp.weixin.qq.com/s/Mi...
インストール
ビルド依存
FlexboxLayoutプロパティの説明
flexDirection xmlで使用
flexWrap xmlで使用
xmlで使用
alignItems 既定値は
alignContent
dividerプロパティ
エレメント間の分割線の説明
サブエレメントのプロパティ
layout_order
layout_flexGrow
layout_flexShrink
layout_alignSelf
layout_flexBasisPercent
recyclerViewとの組み合わせ
FlexboxLayoutの応用は広く、主流のtagラベルフローレイアウトは使用可能
同じ画像のフローレイアウトの原理が通じているので、ここでは一つ一つ挙げません.
最後にgithubアドレスを添付します.https://github.com/taixiang/flexboxLayout
私のブログへようこそ:https://blog.manjiexiang.cn/マイクロ信号に注目してください:春風十里はあなたを知っているほうがいいです.
RelativeLayout
・LinearLayout
などの定番レイアウトはおなじみと思いますが、今日は新しいレイアウト「フレックスレイアウト」--FlexboxLayoutをご紹介します.Flex
Flexible Boxの略で「フレックスレイアウト」を意味し、フロントエンドcssスタイルに広く応用されている.以前にやったことがあるReact-Native
微信ウィジェットとは、ページレイアウトの多くはflexフレックスレイアウトを使用しており、異なる画面サイズで一貫したレイアウト構造を提供することができ、簡便、完全、応答的に様々なページレイアウトを実現することができる.今日は皆さんにAndroid
移動端のflexレイアウトゲートを開けてみますFlexboxLayout
androidでよく見かけるラベルやフローレイアウトなどをFlexboxLayout
で実現できます.インストール
ビルド依存
dependencies {
implementation 'com.google.android:flexbox:1.0.0'
}
FlexboxLayoutプロパティの説明
flexDirection
flex-direction
属性は主軸の方向(すなわち内部サブエレメントの配列方向)を決定する.row
(デフォルト):水平表示、始点が左端row_reverse
:水平表示、始点右端、row
逆の順column
:垂直表示、始点は上部column_reverse
:垂直表示、始点は底、column
逆の順app:flexDirection="row"
、コードで使用flexboxLayout.setFlexDirection(FlexDirection.ROW)
ここではレイアウトがコンパクトで、要素がレイアウト全体を満たさないようにxmlに設定します.app:alignItems="flex_start"
, app:alignContent="flex_start"
、続きはalignItems
和alignContent
の属性紹介では、読者はこの2つの属性を除いてプレゼンテーションの効果を見ることができる.flexWrap
flexWrap
改行の有無を決めるnowrap
(デフォルト):改行しないwrap
:通常方向に改行し、1行目は上wrap_reverse
:反対方向に改行し、1行目は下app:flexWrap="nowrap"
、コードで使用flexboxLayout.setFlexWrap(FlexWrap.NOWRAP)
justifyContent justifyContent
主軸上の要素の揃え方を決めるflex_start
(デフォルト):主軸方向始点揃えflex_end
:主軸方向終点揃えcenter
:主軸方向中央揃えspace_between
:主軸方向両端が揃えられ、要素間の間隔が等しい.space-around
:各要素の両側の間隔が等しい.したがって、エレメント間の間隔は、エレメントとレイアウトボーダーの間隔の2倍になります.xmlで使用
app:justifyContent="flex_start"
コードで使用flexboxLayout.setJustifyContent(JustifyContent.FLEX_START)
ここでは主軸方向の揃え方であることに注意flexDirection
属性、例えば主軸がrow
水平方向であればcenter
属性は水平中央、column
であれば垂直方向中央となる.alignItems
alignItems
要素の交差軸方向の揃え方を決め、「交差軸」は主軸と直交する方向、例えば主軸が水平であれば交差軸が垂直方向であることを理解するstretch
(デフォルト):親レイアウト全体を軸方向で埋め尽くします.flex_start
交差軸の始点揃えflex_end
交差軸の終点揃え.center
交差軸の中央揃えbaseline
要素1行目文字のベースライン揃えstretch
エレメントレイアウト設定の幅に関係なく、親レイアウトが交差軸方向に満たされます.たとえばflexDirection
デフォルトrow
水平方向であれば、エレメントは親レイアウトを垂直方向に満たされます.一般的にはflex_start
属性を選択し、要素のサイズを自由に制御できます.alignContent
alignContent
複数本の軸線の揃え方を決めた.アイテムに軸が1本しかない場合は、このアトリビュートは機能しません.stretch
(デフォルト):交差軸全体を軸が占める.flex_start
交差軸方向始点揃えflex_end
交差軸方向終点揃えcenter
交差軸方向中央揃えspace_between
交差軸方向両端揃え、要素間の間隔が等しいspace_around
各要素の両側の間隔は等しい.したがって、エレメント間の間隔は、エレメントとレイアウトボーダーの間隔の2倍になるalignContent
複数行の場合に役立ちます.justifyContent
主軸方向の位置合わせを設定し、alignContent
交差軸方向の位置合わせを設定します.例えば要素が水平方向に改行されている、justifyContent
設定center
属性が水平中央、alignContent
設定center
属性が垂直中央である.dividerプロパティ
エレメント間の分割線の説明
showDividerHorizontal
4つの属性none | beginning | middle | end
、beginningはレイアウトの上に線を表示し、endはレイアウトの下に線を表示するdividerDrawableHorizontal
伸縮線の間に水平分割線を置くshowDividerVertical
beginningレイアウトの左側に線が表示され、endレイアウトの右側に線が表示されるdividerDrawableVertical
伸縮線の間に垂直分割線を置くshowDivider
dividerDrawableHorizontalに合わせるとshowDividerHorizontalの効果、dividerDrawableVerticalに合わせるとshowDividerVerticalの効果、dividerDrawableに合わせると水平と垂直方向の線が表示されるdividerDrawable
drawable属性、showDividerに合わせて水平方向と垂直方向の線を表示できるapp:alignContent="flex_start"
app:alignItems="flex_start"
app:flexWrap="wrap"
app:dividerDrawable="@drawable/divider"
app:showDivider="beginning|end|middle"
サブエレメントのプロパティ
FlexboxLayout
自身に属性を設定するほか、サブエレメントに属性を設定することもできますlayout_order
layout_order
エレメントの並び順を変えることができ、デフォルト値は1で、順番に並べられている値が大きいほど、後ろ文字1のtextView
の属性app:layout_order="2"
、残りはデフォルト1layout_flexGrow
layout_flexGrow
要素の拡大率を決定し、デフォルトでは拡大せず、値は0とする.1つの要素のlayout_flexGrow
属性が2で、他の要素が1であれば、前者が占める残りの空間は他の2倍になります.属性はLinearLayout
のweight
に類似している.3つのviewのapp:layout_flexGrow
値はそれぞれ1、1、2layout_flexShrink
layout_flexShrink
要素の縮小率を決定し、デフォルトでは1である.すなわち、空間が不足している場合、その要素は縮小される.値が大きいほど縮小率が大きくなり、0の場合は縮小しません.スペースが十分な場合、プロパティは無効です.3つのviewのapp:layout_flexShrink
値はそれぞれ2、1、1layout_alignSelf
layout_alignSelf
個々のサブエレメントに他のサブエレメントと異なる位置合わせを許可し、デフォルト値はauto
親エレメントを継承alignItems
属性、残りの属性値はalignItems
属性の最初のviewapp:layout_alignSelf="center"
垂直中央layout_flexBasisPercent
layout_flexBasisPercent
余分なスペースを割り当てる前に、サブエレメントが占める主軸スペースの割合を決定する.デフォルトは自己サイズ第1ビューapp:layout_flexBasisPercent="50%"
水平占有率50%recyclerViewとの組み合わせ
FlexboxLayoutの応用は広く、主流のtagラベルフローレイアウトは使用可能
FlexboxLayout
動的追加viewで実現可能であり、例外としてRecyclerView
のレイアウトマネージャFlexboxLayoutManager
を使用してフローレイアウトを完了することも可能である.FlexboxLayoutManager manager = new FlexboxLayoutManager(this);
manager.setFlexDirection(FlexDirection.ROW);
manager.setFlexWrap(FlexWrap.WRAP);
recyclerView.setLayoutManager(manager);
同じ画像のフローレイアウトの原理が通じているので、ここでは一つ一つ挙げません.
最後にgithubアドレスを添付します.https://github.com/taixiang/flexboxLayout
私のブログへようこそ:https://blog.manjiexiang.cn/マイクロ信号に注目してください:春風十里はあなたを知っているほうがいいです.