2011-01-17 2 views
2

Как я могу получить уведомление о завершении макета? Есть что-то вроде onLayoutFinished(), что я могу реализовать или переопределить где-нибудь?Слушайте изменения макета в Android

От View Javadoc:

Макет представляет собой процесс, два прохода: а мера проход и передача макета. Проходной измерительный проход реализован в измерении (int, int) и является обходным деревом сверху вниз . Каждый вид толкает спецификации размеров вниз Дерево во время рекурсии. На конце измерения конец каждого измерения сохранил свои измерения. Второй проход проходит в макете (int, int, int, int), а также сверху вниз. Во время этого прохода каждый родитель имеет , ответственный за размещение всех своих детей , используя размеры, рассчитанные в .

Что бы я хотел, это выполнить некоторую логику после завершения «второго прохода». В частности, я хочу внести некоторые изменения в представление, а затем внести изменения в другое представление, зависящее от кадра (положение и размер) первого представления.

ответ

3

Вы можете просто переопределить onLayout() и делать все, что вам нужно сделать после вызова super.onLayout(). Вы также можете переопределить onSizeChanged(), который будет вызываться только тогда, когда макет будет изменять координаты/размер представления.

+0

Я попытался переопределить onLayout(), но все не так, как я ожидал. Поскольку мне казалось, что я борюсь с тем, как платформа делает что-то, я, наконец, решил рассчитать результаты прохода макета на первом представлении и запросить изменения в макете второго представления на основе этого. Представления затем изменяются вместе во время одного и того же макета. – hpique

Смежные вопросы