依賴
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
app:layout_constraintHorizontal_chainStyle
間隔類型
app:layout_constraintDimensionRatio
設置控件寬高百分百
<Button android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintDimensionRatio="H,16:9" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintHorizontal_bias 與 app:layout_constraintVertical_bias
設置 橫向 和 豎向 控件位置百分百
<ImageView android:id="@+id/up_down_image" android:src="@mipmap/ic_triangle_black" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintHorizontal_bias="0.55" app:layout_constraintTop_toTopOf="@id/select_class" app:layout_constraintBottom_toBottomOf="@id/select_class" app:layout_constraintLeft_toRightOf="@id/bg" app:layout_constraintRight_toLeftOf="@id/bg"/>
app:layout_constraintWidth_percent 與 app:layout_constraintHeight_percent
設置控件寬度與高度在父布局寬度或者高度占的的百分比大小
<TextView android:id="@+id/text_noon" android:text="demo" android:textSize="@dimen/font_size_14" android:textColor="@color/fontBlack3" android:background="@color/colorGreen" android:gravity="center" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginTop="15dp" android:layout_marginBottom="15dp" app:layout_constraintHorizontal_bias="0.90" app:layout_constraintWidth_percent="0.20" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toLeftOf="parent"/>
app:layout_constrainedWidth 與 app:layout_constrainedHeight
在一些TextView或者Button控件,控件大小可能會跟隨內容變化,這個時候設置2個屬性就可以分別在寬度和高度是強制約束給定的大小,讓控件寬度或者高度不會超過給予的約束范圍
constraintlayout.widget.Barrier
約束輔助線
用於當有2個View 都有可能在隱藏狀態,但是另外一個View需要根據這2個View改變位置.這個時候layout_constraintRight_toLeftOf這個屬性你會發現你只有一個,但是需要判斷2個View.所以這個約束輔助線作用就出來了,它的constraint_referenced_ids這個屬性可以添加多個View並且根據這些View改變位置.
<androidx.constraintlayout.widget.Barrier android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="left" app:constraint_referenced_ids="up_down_image,text_content" app:layout_constraintTop_toTopOf="@id/bg" app:layout_constraintBottom_toBottomOf="@id/bg" app:layout_constraintRight_toLeftOf="@id/up_down_image"/>
constraintlayout.widget.Guideline
輔助線
<androidx.constraintlayout.widget.Guideline android:id="@+id/guideline1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.04"/>
constraintlayout.widget.Group
將若干個控件組合在一起,主要是使用android:visibility="gone"屬性一次性隱藏多個控件
<androidx.constraintlayout.widget.Group android:id="@+id/group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" app:constraint_referenced_ids="line,whether,opinion" app:layout_constraintTop_toBottomOf="@id/name" app:layout_constraintLeft_toLeftOf="parent"/>
app:layout_constraintCircle
圓形定位,讓B控件以A控件為圓形圍繞在指定角度文字
<Button android:id="@+id/buttonA" ... /> <Button android:id="@+id/buttonB" ... //引用的控件ID app:layout_constraintCircle="@+id/buttonA" //圓半徑 app:layout_constraintCircleRadius="100dp" //偏移圓角度 水平右方向為0逆時針方向旋轉 app:layout_constraintCircleAngle="45" />
Space
<Space android:layout_width="0dp" android:layout_height="20dp" app:layout_constraintTop_toBottomOf="@id/opinion" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"/>