Возвращает ли что-нибудь onMeasure

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

Ответ

Метод onMeasure() не возвращает значения явно (void), но его задача — установить размеры View через setMeasuredDimension(width, height). Если не вызвать этот метод, будет выброшено исключение IllegalStateException. Пример:

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    val width = resolveSize(desiredWidth, widthMeasureSpec)
    val height = resolveSize(desiredHeight, heightMeasureSpec)
    setMeasuredDimension(width, height)
}

Размеры определяются на основе MeasureSpec (режимы EXACTLY, AT_MOST, UNSPECIFIED) и логики View.