0

Lorsque le téléphone est en mode paysage, je me demande comment je peux obtenir la hauteur en pixels de l'écran sans la barre d'action. Donc, la hauteur en pixels de la zone visible réelle. Je veux cela afin que je puisse dimensionner un GridLayout de manière appropriée. Le GridLayout est à l'intérieur d'un LinearLayout, donc si je pouvais obtenir la hauteur en pixels du LinearLayout cela devrait fonctionner aussi.Comment puis-je obtenir la hauteur de l'écran moins la barre d'action?

Merci!

Répondre

1

Calculer toute la hauteur:

public static int getScreenHeight(Activity activity) { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    return metrics.heightPixels; 
} 

et déduisent la hauteur Barre d'action de celui-ci:

public static int getActionBarHeight(Context context) { 
    int[] textSizeAttr = new int[]{R.attr.actionBarSize}; 
    TypedArray a = context.obtainStyledAttributes(new TypedValue().data, textSizeAttr); 
    int height = a.getDimensionPixelSize(0, 0); 
    a.recycle(); 
    return height; 
} 
0

Vous pouvez utiliser View#getGlobalVisibleRect(Rect) pour obtenir les coordonnées d'un point de vue particulier sur l'écran.

 

    layout.post(new Runnable() { 
     @Override 
     public void run() { 
      final Rect rect = new Rect(); 
      layout.getGlobalVisibleRect(rect); 

      final int height = rect.height(); 
     } 
    });