У меня есть ViewFlipper в представлении моей основной деятельности.В onCreate я создаю экземпляры Views, которые добавляются в ViewFlipper.После этого я установил отображаемый дочерний элемент на первый.И когда кнопка нажата, я переключаю дочерний экран ViewFlipper на второй вид.Сразу после вызова viewFlipper.setDisplayedChild(1)
мне нужно выполнить некоторые вычисления и создать несколько объектов, основанных на ширине и высоте отображаемого дочернего элемента.
Основная проблема здесь заключается в том, что в первый раз (второй = 1) дочерний элемент отображает измерениезрения еще не сделано.Так что мои ширина и рост равны 0. Если я вернусь (setDisplayedChild(0)
) и затем вернусь ко второму ребенку, то все в порядке (ширина и высота верны).
Я провел некоторое исследование об этом поведениипросмотрел и обнаружил, что существует метод [onMeasure
] (http://developer.android.com/reference/android/view/View.html#onMeasure(int, int)), который можно переопределить, и все можно сделать здесь.ОК, так и должно быть.На самом деле, но проблема в том, что onMeasure
вызывается 4 раза при каждом переключении вида.И мои выводы заключались в том, что на первом и третьем вызовы ширина и высота являются полноэкранными.Второй и четвертый вызовы - правильная ширина и высота.Поскольку я должен создавать новые объекты в этой точке, неразумно делать это в onMeasure
.
Есть ли какой-то другой, правильный способ сделать это?Можно ли форсировать измерения?Мне действительно нужно показывать изображение на экране для измерений?
С уважением, Zmeda