Android 如何计算屏幕高度减去操作栏?

Android 如何计算屏幕高度减去操作栏?,android,android-layout,height,android-screen,android-window,Android,Android Layout,Height,Android Screen,Android Window,当我的手机处于横向时,我想知道如何获得屏幕的像素高度,而不包括actionbar。因此,实际可视区域的像素高度。我想要这个,这样我就可以适当地调整网格布局的大小。GridLayout位于LinearLayout内部,因此如果我可以获得LinearLayout的像素高度,那么它也应该可以工作 谢谢 计算整个高度: public static int getScreenHeight(Activity activity) { DisplayMetrics metrics = new Displ

当我的手机处于横向时,我想知道如何获得屏幕的像素高度,而不包括actionbar。因此,实际可视区域的像素高度。我想要这个,这样我就可以适当地调整网格布局的大小。GridLayout位于LinearLayout内部,因此如果我可以获得LinearLayout的像素高度,那么它也应该可以工作


谢谢

计算整个高度:

public static int getScreenHeight(Activity activity) {
    DisplayMetrics metrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    return metrics.heightPixels;
}
并从中扣除操作杆高度:

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;
}

计算整个高度:

public static int getScreenHeight(Activity activity) {
    DisplayMetrics metrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    return metrics.heightPixels;
}
并从中扣除操作杆高度:

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;
}
您可以使用获取屏幕上特定视图的坐标


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

            final int height = rect.height();
        }
    });
您可以使用获取屏幕上特定视图的坐标


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

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