2010-08-02 5 views
1

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

mMapView.getWidth() 
mMapView.getHeight() 

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

ответ

2

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

+0

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

6

Из this post, что я нашел прибегая к помощи:

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

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

view.onFinishInflate

view.onMeasure

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

view.onLayout

activity.onWindowFocusChanged (true)

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

EDIT

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