當(dāng)在 ConstraintLayout 中添加約束,使兩個(gè) View 水平排布時(shí),如下:

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/btn2"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="World"
app:layout_constraintLeft_toRightOf="@id/btn1"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
在默認(rèn)情況下,子 View 會(huì)均勻分布空余空間。如果想讓兩個(gè) View 挨在一起,或者分布在兩側(cè),則可以通過app:layout_constraintHorizontal_chainStyle(水平方向)或app:layout_constraintVertical_chainStyle(豎直方向)屬性設(shè)置鏈?zhǔn)讲季值臉邮健?/p>
鏈?zhǔn)讲季?/h1>
ConstraintLayout 提供了 "鏈" 的功能,用于在布局中將多個(gè)視圖連接在一起,并控制它們的排列方式和空間分配。鏈?zhǔn)怯梢唤M視圖組成的,這些視圖通過約束連接在一起,并在水平或垂直方向上形成一個(gè)連續(xù)的布局。可以在鏈中設(shè)置視圖的排列方式,使其根據(jù)不同的需求進(jìn)行均勻分布、緊密排列或其他布局效果。
鏈?zhǔn)讲季值娜N樣式
-
spread(默認(rèn)值):
- 視圖在鏈中均勻分布,鏈中的所有視圖會(huì)占用可用的空間,并且彼此之間的間隔是相等的。
適用于希望鏈中的視圖均勻分布且填滿整個(gè)可用空間的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="spread"
-
spread
-
spread_inside:
- 視圖在鏈中均勻分布,但第一個(gè)視圖和最后一個(gè)視圖的邊緣與父布局的邊緣對(duì)齊,視圖之間的間隔是相等的。
適用于希望鏈中的視圖均勻分布但保留兩端邊距的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="spread_inside"
-
spread_inside
-
packed:
- 視圖在鏈中緊密排列,鏈中的所有視圖靠在一起,不均勻地分布在父布局中??梢赃x擇性地使用 layout_constraintHorizontal_bias 來(lái)調(diào)整視圖在鏈中的相對(duì)位置。
適用于希望鏈中的視圖緊密排列在鏈中間或鏈的一側(cè)的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="packed"
-
packed
ConstraintLayout 提供了 "鏈" 的功能,用于在布局中將多個(gè)視圖連接在一起,并控制它們的排列方式和空間分配。鏈?zhǔn)怯梢唤M視圖組成的,這些視圖通過約束連接在一起,并在水平或垂直方向上形成一個(gè)連續(xù)的布局。可以在鏈中設(shè)置視圖的排列方式,使其根據(jù)不同的需求進(jìn)行均勻分布、緊密排列或其他布局效果。
spread(默認(rèn)值):
- 視圖在鏈中均勻分布,鏈中的所有視圖會(huì)占用可用的空間,并且彼此之間的間隔是相等的。
適用于希望鏈中的視圖均勻分布且填滿整個(gè)可用空間的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="spread" - spread
spread_inside:
- 視圖在鏈中均勻分布,但第一個(gè)視圖和最后一個(gè)視圖的邊緣與父布局的邊緣對(duì)齊,視圖之間的間隔是相等的。
適用于希望鏈中的視圖均勻分布但保留兩端邊距的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="spread_inside" - spread_inside
packed:
- 視圖在鏈中緊密排列,鏈中的所有視圖靠在一起,不均勻地分布在父布局中??梢赃x擇性地使用 layout_constraintHorizontal_bias 來(lái)調(diào)整視圖在鏈中的相對(duì)位置。
適用于希望鏈中的視圖緊密排列在鏈中間或鏈的一側(cè)的場(chǎng)景:
app:layout_constraintHorizontal_chainStyle="packed" - packed


