1

当我将手机置于横向时,我想知道如何获得不包括操作栏的屏幕像素高度。所以实际可视区域的像素高度。我想要这个,所以我可以GridLayout适当地调整大小。它GridLayout在里面,LinearLayout所以如果我能得到它的像素高度LinearLayout也应该工作。

谢谢!

4

2 回答 2

4

计算整个高度:

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;
}
于 2017-08-11T14:45:18.053 回答
0

您可以使用View#getGlobalVisibleRect(Rect)来获取屏幕上特定视图的坐标。


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

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

于 2017-08-11T14:52:55.860 回答