выполнить код после загрузки активности в Android - PullRequest
0 голосов
/ 16 июля 2011

Я пытаюсь в моем приложении отформатировать некоторые изображения на экране после загрузки Действия.Проблема в том, что внутри onCreate(), onResume() методов у моего ImageView есть ширина и высота = 0.Как я могу запустить некоторый код после изменения размеров представлений?Я проверяю onPostResume(), но он не работает = (

1 Ответ

3 голосов
/ 16 июля 2011

Представления в Android не имеют фиксированного размера / позиции, как в Blackberry или iPhone; вместо этого они выложены динамически. Раскладка происходит намного позже, чем onCreate/onResume, и теоретически может произойти много раз. Каждое представление имеет методы onMeasure и onLayout, которые отвечают за это. Только после возврата метода onLayout вы можете определить размер и позицию представления. Перед этим размер представления равен 0, а позиция равна 0 (как вы заметили).

Так что бессмысленно пытаться получить размер ImageView в onCreate/onResume, потому что onLayout еще не был вызван.

Вместо этого переопределите onLayout вот так и делайте там свои вещи:

public class MyImageView extends ImageView {
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        // at this point size and position are known
        int h = getHeight();
        int w = getWidth();
        doSomethingCool(h,w);
    }
}
...