Что произойдет если вызвать requestLayout()

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

Ответ

Вызов requestLayout() сообщает системе, что текущая разметка View устарела и её нужно пересчитать. Это приводит к вызову onMeasure(), onLayout(), и, если размеры изменились, onDraw().

Важные моменты:

  • Вызовет перерисовку только текущей View и её родителей (если изменились размеры)
  • Не гарантирует немедленного обновления (произойдёт в следующем цикле рендеринга)
  • Частые вызовы могут привести к проблемам с производительностью

Пример:

view.setOnClickListener {
    view.layoutParams.width = 200
    view.requestLayout() // Запускает перерасчёт layout
}

Для простого обновления отображения без изменения layout лучше использовать invalidate().