Ответ
Вызов requestLayout() сообщает системе, что текущая разметка View устарела и её нужно пересчитать. Это приводит к вызову onMeasure(), onLayout(), и, если размеры изменились, onDraw().
Важные моменты:
- Вызовет перерисовку только текущей View и её родителей (если изменились размеры)
- Не гарантирует немедленного обновления (произойдёт в следующем цикле рендеринга)
- Частые вызовы могут привести к проблемам с производительностью
Пример:
view.setOnClickListener {
view.layoutParams.width = 200
view.requestLayout() // Запускает перерасчёт layout
}
Для простого обновления отображения без изменения layout лучше использовать invalidate().