如何在没有状态栏的情况下获得屏幕高度(像素)& actionbar或者它也有帮助,如果有任何身体告诉如何获得状态栏和操作栏的高度。我已经找到屏幕高度,但它包括状态栏和&行动吧。我使用支持库v7作为操作栏。我在线搜索,但这些解决方案对我不起作用。
答案 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();
}
});
这是“在飞行中”写的,只是为了让你知道如何做到这一点。