Ответ
В Android отрисовка View проходит через три основные стадии:
-
Measure - измерение размеров View. Вызывается
onMeasure(), где View определяет свои размеры с учетом constraints от родителя. -
Layout - размещение View. Вызывается
onLayout(), где View размещает свои дочерние элементы, используя измеренные размеры. -
Draw - отрисовка View. Вызывается
onDraw(), где View рисует себя на Canvas.
Пример:
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
// Расчет размеров
setMeasuredDimension(calculatedWidth, calculatedHeight)
}
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
// Размещение дочерних View
childView.layout(childLeft, childTop, childRight, childBottom)
}
override fun onDraw(canvas: Canvas) {
// Отрисовка
canvas.drawColor(Color.RED)
}