2011-03-02 4 views
3

Salut J'essaie d'obtenir la taille de l'écran de l'écran moins la barre de menu en bas. Je sais que je pourrais juste soustraire un nombre constant en fonction de la résolution de l'appareil, mais c'est un hack super laid. Je suis sûr que les gens de google ne sont pas assez bêtes pour oublier de donner à l'utilisateur une fonction pour obtenir la hauteur de la barre de menu inférieure afin de pouvoir la soustraire de la taille plein écranTaille de l'écran Menu nid d'abeille android

Ceci est un post similaire. Size of android notification bar and title bar?

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

what_i_need =metrics.heightPixels-buttomMenuHeight(); 

J'ai besoin buttomMenuHeight();

Je ne pouvais pas le trouver dans l'API. Je ne me soucie pas vraiment de la comparabilité en arrière à ce point

Merci

Répondre

7

Pourquoi ne pas utiliser la hauteur du haut niveau Point de vue de l'activité? par exemple. Si votre activité contient une LinearLayout pleine hauteur, utilisez sa hauteur, vous n'avez donc pas besoin de connaître la hauteur du menu ou la hauteur de la barre de notification.

Je pense que vous êtes sur une route dangereuse en faisant ce genre de calcul, car vous ne savez pas ce que les mises en page futures pour Android pourraient être, ou comment ils pourraient différer sur Google TV, ou autre.

+0

Je dessine l'image en code natif et je dois passer la taille de l'écran à C. J'ai essayé d'obtenir la hauteur par getHeight() de la vue, mais qui renvoie 0 toujours même après l'appel de setContentView. – user498584

0

Je dessine l'image en code natif et je dois passer la taille de l'écran à C.

J'ai essayé de la hauteur par getHeight() de la vue, mais qui retourne 0 toujours même après setContentView est appelé.

RelativeLayout masterLayout = new RelativeLayout(this); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT); 
masterLayout.setLayoutParams(params); 
setContentView(masterLayout); 

lorsque je tente masterLayout.getHeight(), il retourne 0. Je pensais obtenir toute la hauteur de l'écran comme je l'ai dit fill_parent.

1

Essayez d'appeler getHeight() après onLayout. La vue n'est pas dimensionnée pour se gonfler.

EDIT: ou, puisque Activity n'a pas onLayout, vous pouvez attendre onSizeChanged.

(Référence How to know when activity is laid out?)

Questions connexes