В чем разница между RelativeLayout и ConstraintLayout

«В чем разница между RelativeLayout и ConstraintLayout» — вопрос из категории UI и Views, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

RelativeLayout и ConstraintLayout оба позволяют позиционировать view относительно других элементов, но с ключевыми отличиями:

  • Производительность: ConstraintLayout оптимизирован для сложных иерархий, уменьшая вложенность (flat hierarchy), что ускоряет рендеринг.
  • Гибкость: ConstraintLayout поддерживает цепочки (chains), соотношения (ratios) и привязки к направляющим (guidelines), чего нет в RelativeLayout.
  • Читаемость: XML ConstraintLayout может быть более громоздким из-за множества атрибутов app:layout_constraint*.

Пример ConstraintLayout:

<Button
    android:id="@+id/button"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

Итог: ConstraintLayout — современная замена RelativeLayout с лучшей производительностью и возможностями.