2010-08-02 7 views
1

J'ai un mapview sur lequel je veux placer des marqueurs. Je vais les récupérer à partir d'un service Web lorsque je démarre l'activité. J'ai donc besoin de connaître les paires lat/lng minimum et maximum pour la fenêtre actuelle. J'appelleComment savoir quand une activité est organisée?

mMapView.getWidth() 
mMapView.getHeight() 

Mais ils retournent tous les deux 0 lorsque l'activité démarre. J'ai essayé de le mettre dans onAttachedToWindow, onResume, onPostCreate, onPostResume, onStart et ainsi de suite, mais en vain. Comment puis-je savoir que l'activité a terminé de disposer toutes les vues et est prêt à me donner les bonnes mesures de hauteur et de largeur?

Répondre

2

Je pense que vous devez remplacer onSizeChanged et appeler getWidth/Height à partir de là. Sachez cependant que onSizeChanged peut être appelé plusieurs fois pendant le cycle de vie de votre activité (chaque fois que la taille de la vue change).

+0

Merci, je n'avais pas pensé à le faire. Mais cela a résolu mon problème! :) – AmITheRWord

6

De this post que j'ai trouvé googler:

En supposant que votre vue est visible, sa taille a été attribué par le temps reçoit le focus de la fenêtre de l'activité . Ce est, lorsque activity.onWindowFocusChanged est appelé avec hasFocus = true.

La séquence est d'environ:

view.onFinishInflate

view.onMeasure

view.onSizeChanged (largeur, hauteur, 0, 0)

view.onLayout

activity.onWindowFocusChanged (true)

J'ai essayé et cela a fonctionné.

EDIT

j'ai trouvé qu'il vaut mieux probablement l'aide d'un ViewTreeObserver, voir this answer.

Questions connexes