Как получить высоту экрана минус панель действий?

Когда у меня телефон в альбомной ориентации, мне интересно, как я могу получить высоту экрана в пикселях, не считая панель действий. Таким образом, высота пикселя фактической видимой области. Я хочу это, чтобы я мог измерить GridLayout соответственно. GridLayout находится внутри LinearLayout так что если бы я мог получить высоту пикселя LinearLayout это должно работать тоже.

Спасибо!

2 ответа

Рассчитайте всю высоту:

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

и вычтите из него высоту Action Bar:

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

Вы можете использовать View#getGlobalVisibleRect(Rect) чтобы получить координаты конкретного вида на экране.


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

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

Другие вопросы по тегам