Что под капотом requestLayout

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

Ответ

requestLayout() помечает View как требующую перерасчета layout. Это приводит к вызову onMeasure() и onLayout() для этой View и всех ее родителей вверх по иерархии. Однако, он не гарантирует немедленного перерисовывания (onDraw()).

Ключевые моменты:

  1. Запускает процесс измерения и размещения
  2. Распространяется вверх по View hierarchy
  3. Не вызывает onDraw() напрямую (для этого нужен invalidate())

Пример:

view.requestLayout() // Пересчитает размеры и положение
view.invalidate()    // Вызовет перерисовку

Нюансы:

  • Если размер View не изменился, система может пропустить перерасчет
  • Частые вызовы могут привести к проблемам производительности