官網(wǎng)介紹
Android常見布局
- LinearLayout
- RelativeLayout
- FrameLayout
- TableLayout
- GridLayout
- AbsoluteLayout
使用約束布局優(yōu)點渔呵,避免布局嵌套怒竿,在一定程度上取代LinearLayout、RelativeLayout扩氢。
布局
居中于父容器
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
居中于控件中心
- 水平方向居中
app:layout_constraintStart_toStartOf="@id/button"
app:layout_constraintEnd_toEndOf="@id/button"
- 垂直方向居中
app:layout_constraintTop_toTopOf="@+id/button"
app:layout_constraintBottom_toBottomOf="@id/button"
- 居中控件的邊
app:layout_constraintTop_toBottomOf="@+id/button"
app:layout_constraintBottom_toBottomOf="@id/button"
防止超出約束
防止水平和垂直方向約束失效
app:layout_constrainedWidth="true"
app:layout_constrainedHeight="true"
偏移
水平方向或者垂直方向上偏移
app:layout_constraintVertical_bias="0.8"
app:layout_constraintHorizontal_bias="0.5"
邊距
除了邊距常見的屬性耕驰,還有一些特殊的邊距屬性
app:layout_goneMarginStart="5dp"
app:layout_goneMarginEnd="5dp"
app:layout_goneMarginTop="5dp"
app:layout_goneMarginBottom="5dp"
例如控件B在控件A的右側(cè)朦肘,如果A隱藏之后,B會占據(jù)A的位置领舰,但是設(shè)置以上屬性會占位一定的間距
角度定位
通過「圓?」「?度」「半徑」設(shè)置圓形定位
app:layout_constraintCircle="@id/view"
app:layout_constraintCircleAngle="90"
app:layout_constraintCircleRadius="180dp"
約束鏈
app:layout_constraintVertical_chainStyle="packed"
- packed(打包)
- spread (擴(kuò)散)
- spread_inside(內(nèi)部擴(kuò)散)
寬高比
Constraintlayout中的控件不支持MATCH_PARENT矩父,只有WRAP_CONTENT,0dp(MATCH_CONSTRAINT);
app:layout_constraintDimensionRatio可以定義一個控件相對于另一個控件的尺寸比例,默認(rèn)是寬高比,前提width或者h(yuǎn)eight至少有一個為0dp(match_constraint)攻柠;如果width和height都為0需要設(shè)置
app:layout_constraintDimensionRatio="16:9"http://默認(rèn)寬高比
app:layout_constraintDimensionRatio="H,16:9"
app:layout_constraintDimensionRatio="W,16:9"
百分比
-百分比是父容器的百分比
android:layout_width="0dp"
app:layout_constraintWidth_percent="0.3"
輔助控件
Guideline
- 設(shè)置輔助線的?向 android:orientation="vertical"
- 距離左側(cè)或上側(cè)的距離 layout_constraintGuide_begin
- 距離右側(cè)或下側(cè)的距離 layout_constraintGuide_end
百分? layout_constraintGuide_percent
<androidx.constraintlayout.widget.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_begin="3dp"
app:layout_constraintGuide_end="3dp"
app:layout_constraintGuide_percent="0.7"/>
Group
為一組控件統(tǒng)一設(shè)置顯示隱藏
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="button"/>
Layer
為一組控件統(tǒng)一設(shè)置旋轉(zhuǎn)/縮放/位移
Barrier
設(shè)置?組控件的某個?向的屏障浪谴,來避免布局嵌套
Placeholder
通過 setContentId來將指定控件放到占位符的位置。
Flow
wrapMode
- chain
- aligned
- none(默認(rèn))