官网介绍
Android常见布局
- LinearLayout
- RelativeLayout
- FrameLayout
- TableLayout
- GridLayout
- AbsoluteLayout
使用约束布局优点,避免布局嵌套,在一定程度上取代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的右侧,如果A隐藏之后,B会占据A的位置,但是设置以上属性会占位一定的间距
角度定位
通过「圆⼼」「⻆度」「半径」设置圆形定位
app:layout_constraintCircle="@id/view"
app:layout_constraintCircleAngle="90"
app:layout_constraintCircleRadius="180dp"
约束链
app:layout_constraintVertical_chainStyle="packed"
- packed(打包)
- spread (扩散)
- spread_inside(内部扩散)
宽高比
Constraintlayout中的控件不支持MATCH_PARENT,只有WRAP_CONTENT,0dp(MATCH_CONSTRAINT);
app:layout_constraintDimensionRatio可以定义一个控件相对于另一个控件的尺寸比例,默认是宽高比,前提width或者height至少有一个为0dp(match_constraint);如果width和height都为0需要设置
app:layout_constraintDimensionRatio="16:9"//默认宽高比
app:layout_constraintDimensionRatio="H,16:9"
app:layout_constraintDimensionRatio="W,16:9"
百分比
-百分比是父容器的百分比
android:layout_width="0dp"
app:layout_constraintWidth_percent="0.3"
辅助控件
Guideline
- 设置辅助线的⽅向 android:orientation="vertical"
- 距离左侧或上侧的距离 layout_constraintGuide_begin
- 距离右侧或下侧的距离 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
为一组控件统一设置显示隐藏
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="button"/>
Layer
为一组控件统一设置旋转/缩放/位移
Barrier
设置⼀组控件的某个⽅向的屏障,来避免布局嵌套
Placeholder
通过 setContentId来将指定控件放到占位符的位置。
Flow
wrapMode
- chain
- aligned
- none(默认)
网友评论