Ответ
Плюсы:
- Гибкость: позволяет создавать сложные макеты с минимальной вложенностью
- Производительность: меньше вложенности → быстрее отрисовка
- Мощные constraints: можно привязывать элементы друг к другу, к родителю или к направляющим
- Поддержка цепочек (chains) для равномерного распределения элементов
- Динамическое изменение constraints через код
Минусы:
- Сложность: требует больше времени на освоение по сравнению с Linear/RelativeLayout
- Громоздкий XML: при сложных макетах разметка становится трудночитаемой
- Не всегда интуитивно понятен в Android Studio (визуальный редактор может вести себя неожиданно)
Пример:
<ConstraintLayout>
<Button
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
app:layout_constraintStart_toEndOf="@id/button"
app:layout_constraintTop_toBottomOf="@id/button"/>
</ConstraintLayout>