Ответ на ваш вопрос:
В линейном макете размер и положение каждого элемента зависит от размеров и положения элементов, которые предшествуют ему. Кроме того, если вы используете размеры макетов для определения размеров элементов вместо фиксированных размеров, более того, размер и положение элемента также зависят от элементов, следующих за ним.
Изменение содержимого одного элемента (в вашем случае вызовом setText()
) может изменить размер этого элемента. В результате Android выполняет повторную компоновку, чтобы определить новые размеры и позиции для дочерних элементов LinearLayout, и для этого необходимо измерить все элементы линейной компоновки.
Ответ на Ваш вопрос:
Было бы разумно предположить, что onMeasure()
можно вызвать в любое время. Хорошим решением было бы изменить onMeasure()
, чтобы у него не было побочных эффектов. Вместо этого подождите onSizeChanged()
, прежде чем «сбросить представление».