Как узнать, когда выложена активность?

1

У меня есть mapview, что я хочу добавить некоторые маркеры. Я извлечу их из веб-службы, когда начну свою деятельность, поэтому мне нужно знать минимальные и максимальные пары lat/lng для текущего видового экрана. Я звоню

mMapView.getWidth()
mMapView.getHeight()

Но они оба возвращают 0, когда начинается действие. Я попытался поместить его в onAttachedToWindow, onResume, onPostCreate, onPostResume, onStart и т.д., Но безрезультатно. Как я могу узнать, что деятельность завершена, выложив все взгляды и готова дать мне правильные измерения высоты и ширины?

Теги:
layout
android-mapview

2 ответа

2
Лучший ответ

Я думаю, вам нужно переопределить onSizeChanged и вызывать getWidth/Height оттуда. Имейте в виду, что onSizeChanged может вызываться несколько раз в течение жизненного цикла вашей деятельности (каждый раз, когда изменяется размер представления).

  • 0
    Спасибо, я не думал об этом. Но это решило мою проблему! :)
6

Из этот пост, что я нашел googling:

Предполагая, что ваш вид виден, его размер был присвоен к моменту Окно активности получает фокус. Что есть, когда activity.onWindowFocusChanged вызывается с hasFocus = true.

Последовательность примерно:

view.onFinishInflate

view.onMeasure

view.onSizeChanged(ширина, высота, 0, 0)

view.onLayout

activity.onWindowFocusChanged(истина)

Я пробовал, и это сработало.

ИЗМЕНИТЬ

Я обнаружил, что, вероятно, лучше использовать ViewTreeObserver, см. этот ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню