Что такое requestLayout в View

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

Ответ

requestLayout() — это метод View, который сообщает системе, что текущая разметка View устарела и требует перерасчёта. Вызывается, когда изменяются параметры, влияющие на размеры или положение View (например, setWidth(), setHeight(), изменение margins).

Как работает:

  1. Помечает View и её родителей как нуждающиеся в перерасчёте (устанавливает флаг PFLAG_FORCE_LAYOUT)
  2. Восходящий вызов по иерархии до ViewRootImpl
  3. На следующем кадре (в performTraversals()) система пересчитывает layout

Пример:

view.layoutParams.width = newWidth
view.requestLayout() // Запускает перерасчёт

Нюансы:

  • Не вызывает немедленного перерасчёта (только планирует его)
  • Если изменить размеры без requestLayout(), изменения не применятся
  • Частые вызовы могут привести к проблемам с производительностью