Ответ
requestLayout() помечает View как требующую перерасчета layout. Это приводит к вызову onMeasure() и onLayout() для этой View и всех ее родителей вверх по иерархии. Однако, он не гарантирует немедленного перерисовывания (onDraw()).
Ключевые моменты:
- Запускает процесс измерения и размещения
- Распространяется вверх по View hierarchy
- Не вызывает
onDraw()напрямую (для этого нуженinvalidate())
Пример:
view.requestLayout() // Пересчитает размеры и положение
view.invalidate() // Вызовет перерисовку
Нюансы:
- Если размер View не изменился, система может пропустить перерасчет
- Частые вызовы могут привести к проблемам производительности