Как получить высоту экрана минус панель действий?
Когда у меня телефон в альбомной ориентации, мне интересно, как я могу получить высоту экрана в пикселях, не считая панель действий. Таким образом, высота пикселя фактической видимой области. Я хочу это, чтобы я мог измерить 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();
}
});