2010-08-13 4 views
4

J'ai des icônes cliquables sur une carte montrant un PopupWindow juste au-dessus de l'icône quand on clique dessus. Cependant, si l'icône est sur la partie supérieure de la carte, le PopupWindow sera caché sous la barre d'état Android. Le PopupWindow s'adapte automatiquement aux bords droit et gauche de l'écran, ainsi qu'au bord supérieur, mais ne tient pas compte du panneau de la barre d'état.Comment faire pour que la hauteur de MapView prenne en compte la barre d'état Android?

Soit il doit y avoir un moyen d'adapter la hauteur de MapView, soit un attribut à PopupWindow qui prend en compte la barre d'état. Bien sûr, il est toujours possible d'ajouter une marge supérieure de taille fixe, mais le panneau supérieur a des hauteurs différentes sur différentes unités Android.

Quelqu'un peut-il vous aider? Merci!

+1

Pas une vraie solution, mais une idée: vous pouvez centrer votre carte sur la chose cliqué avant d'afficher le menu contextuel. Cela pourrait résoudre votre problème? – Sephy

+0

Je ne fais que deviner, mais la taille de la barre d'état n'est-elle pas la même sur tous les appareils si elle est mesurée en immersion? –

+0

Je ne veux pas changer le centre de la carte car l'utilisateur pourrait trouver cela agaçant. Mais merci pour l'idée. La taille de la barre d'état Android diffère selon ce post: http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android – Vanja

Répondre

1

Je n'ai toujours pas trouvé un moyen d'ajuster le higght MapView à la barre d'état Android qui est regrettable.

Cependant, dans le cas de PopupWindow, il suffit de connaître la hauteur de la barre d'état Android car elle est placée à l'écran par le codeur. Le codeur peut alors faire sa propre stratégie autour de la question.

Selon l'autre poste, voici comment cela peut se faire:

Rect rectgle = new Rect(); 
Window window = getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
statusBarHeight = rectgle.top; 

Cependant, prenez soin de ne pas faire ce calcul jusqu'à ce que tous les composants de la fenêtre ont été initialisés car il sera autrement nul. C'est facilement remarqué et réparé.

BR, Vanja

Questions connexes