如何获得没有状态栏的屏幕高度(像素)&动作条?

时间:2014-04-09 13:39:19

标签: android window screen

如何在没有状态栏的情况下获得屏幕高度(像素)& actionbar或者它也有帮助,如果有任何身体告诉如何获得状态栏和操作栏的高度。我已经找到屏幕高度,但它包括状态栏和&行动吧。我使用支持库v7作为操作栏。我在线搜索,但这些解决方案对我不起作用。

1 个答案:

答案 0 :(得分:4)

获取状态栏高度,你可以这样:

 Rect rectangle = new Rect();
 Window window = activity.getWindow();
 window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
 int statusBarTop = rectangle.top;
 int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
 int statusbarHeight = Math.abs(statusBarTop - contentViewTop);

以及操作栏如何,在 actionbarsherlock 中有常量值: abs__action_bar_default_height 。也许你应该尝试在支持lib动作栏中找到类似的东西

P.S。无论如何,由于您知道状态栏高度,您可以通过减去活动的主布局屏幕X值和状态栏高度值来获取操作栏高度。它看起来像这样:

 mMainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            Rect rectangle = new Rect();
            Window window = getWindow();
            window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
            int statusBarHeight = rectangle.top;
            int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
            int statusbarHeight = Math.abs(statusBarHeight - contentViewTop);

            int[] location = {0,0};
            mMainLayout.getLocationOnScreen(location);

            int actionbarheight = Math.abs(location[0] -statusBarHeight);
            Toast.makeText(MainActivity.this, actionbarheight + "", 1).show();
        }
    });

这是“在飞行中”写的,只是为了让你知道如何做到这一点。