要添加約束布局,首先需要在布局文件的根元素中添加約束布局的命名空間:
xmlns:app="http://schemas.android.com/apk/res-auto"
然后就可以使用約束布局的特性了。
約束布局的基本用法是通過約束條件來確定控件的位置。可以通過以下方式設(shè)置約束條件:
相對于父布局的約束條件:
app:layout_constraintTop_toTopOf="parent"
:控件的頂部邊界與父布局的頂部對齊。app:layout_constraintBottom_toBottomOf="parent"
:控件的底部邊界與父布局的底部對齊。app:layout_constraintStart_toStartOf="parent"
:控件的開始邊界與父布局的開始對齊。app:layout_constraintEnd_toEndOf="parent"
:控件的結(jié)束邊界與父布局的結(jié)束對齊。相對于其他控件的約束條件:
app:layout_constraintTop_toBottomOf="@id/otherView"
:控件的頂部邊界與指定控件的底部對齊。app:layout_constraintBottom_toTopOf="@id/otherView"
:控件的底部邊界與指定控件的頂部對齊。app:layout_constraintStart_toEndOf="@id/otherView"
:控件的開始邊界與指定控件的結(jié)束對齊。app:layout_constraintEnd_toStartOf="@id/otherView"
:控件的結(jié)束邊界與指定控件的開始對齊。設(shè)置控件的固定尺寸:
app:layout_constraintWidth="100dp"
:控件的寬度固定為100dp。app:layout_constraintHeight="wrap_content"
:控件的高度根據(jù)內(nèi)容自適應(yīng)。設(shè)置控件的邊距:
app:layout_constraintMarginStart="16dp"
:控件的開始邊距為16dp。app:layout_constraintMarginEnd="16dp"
:控件的結(jié)束邊距為16dp。app:layout_constraintMarginTop="16dp"
:控件的頂部邊距為16dp。app:layout_constraintMarginBottom="16dp"
:控件的底部邊距為16dp。這些約束條件可以通過在控件的屬性中設(shè)置來實現(xiàn)。舉個例子,如果要將一個按鈕放置在父布局的頂部中間,可以使用如下的約束條件:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.5"
app:layout_constraintHorizontal_bias="0.5" />
這樣就將按鈕放置在父布局的頂部中間了??梢愿鶕?jù)具體的需求來設(shè)置不同的約束條件,以實現(xiàn)不同的布局效果。