ConstraintLayout — это мощный инструмент для создания гибких и производительных макетов в Android. Рассмотрим ключевые вспомогательные элементы:
Назначение: Логическая группировка view без создания ViewGroup.
Преимущества:
setVisibility()
)LinearLayout
)<androidx.constraintlayout.widget.Group
android:id="@+id/myGroup"
android:visibility="visible"
app:constraint_referenced_ids="button1,button2,textView1" />
Назначение: Невидимые направляющие для выравнивания элементов.
Типы:
orientation="vertical"
)orientation="horizontal"
)layout_constraintGuide_begin
- отступ от началаlayout_constraintGuide_end
- отступ от концаlayout_constraintGuide_percent
- позиция в процентах (0.5 = 50%)<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.3" />
Назначение: "Динамическая Guideline", которая адаптируется к размеру view.
Типы: left
, top
, right
, bottom
, start
, end
Особенности:
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
app:barrierDirection="end"
app:constraint_referenced_ids="textView1,textView2" />
Назначение: Управление распределением view вдоль оси (горизонтальной/вертикальной).
Типы:
spread
- равномерное распределение (по умолчанию)spread_inside
- крайние view прижаты к границамpacked
- все view сгруппированы вместеАтрибуты:
layout_constraintHorizontal_chainStyle
layout_constraintVertical_chainStyle
layout_constraintHorizontal_weight
<Button
android:id="@+id/button1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@id/button2"
... />
<Button
android:id="@+id/button2"
app:layout_constraintStart_toEndOf="@id/button1"
... />
Эти элементы делают ConstraintLayout мощным инструментом для создания сложных адаптивных макетов с минимальной вложенностью.