У меня есть представление, отображающее тексты и изображения в столбцах в горизонтальном прокручиваемом окне. Он переплачивает и, следовательно, (по крайней мере потенциально) изменяет размеры себя по мере изменения его содержимого; он также переплачивает и изменяет размеры (поддерживая примерно постоянную площадь), когда мягкая клавиатура приходит и уходит, а высота представления изменяется.
Я обнаружил, что работает requestLayout() (в том смысле, что он вызывает вызов для моего onMeasure() перегрузка) большую часть времени... но не при вызове из onSizeChanged().
Мне удалось обойти это post() Runnable, который вызвал requestLayout()
, а затем post()
ed другой Runnable
, который вызвал мой код, который должен запускаться после onMeasure()
... но это кажется немного хрупким (я не хочу чтобы добавить задержку, но я хочу быть уверенным, что мой второй Runnable
выполняется после async onMeasure()
), и, возможно, потому, что он делает так много проходов через цикл событий, экран слишком сильно мигает.
Есть ли какой-то способ - в onSizeChanged()
- заставить a onMeasure()
(и, возможно, другое onSizeChanged()
) произойти до следующего OnDraw()?