Для начала вспомним, как отрисовывается дерево view. При отрисовке любого лэйаута вызываются методы
onMeasure(),
onLayout() и
onDraw().
На шаге
onMeasure() лэйаут передает желаемые значения размеров каждой дочерней view. View сохраняет размеры, которые позже используется при вызове
onLayout().
При вызове
onLayout() дочерние view располагаются на лэйауте с использованием размеров, полученных на шаге
onMeasure().
На шаге
onDraw() происходит отрисовка дерева view.
Обычно в
LinearLayout каждый из этих методов вызывается один раз, но при использовании атрибута
weight – фаза
onMeasure() выполняется в два прохода. В этом случае перформанс
LinearLayout становится таким же как у
RelativeLayout.