获得STATUS BAR的高度

时间:2013-11-29 08:31:47

标签: java android height statusbar

我正在尝试写private以获得status bar's高度。

private int statusBar() {
    Rect rect = new Rect();
    int statusBar = rect.top;
    return statusBar;
}

到目前为止一切都很好。但是当我这样做时:

Toast.makeText(getApplicationContext(), "" + statusBar(), Toast.LENGTH_LONG).show();

返回0.

2 个答案:

答案 0 :(得分:2)

刚刚在网站上搜索了一段时间并得到了这个。

private int statusBar() {
    Rect rectgle= new Rect();
    Window window= getWindow();
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
    int StatusBarHeight= rectgle.top;
    int contentViewTop= 
        window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
    int statusBar = contentViewTop - StatusBarHeight;
    return statusBar;
}

祝酒词:

Toast.makeText(getApplicationContext(), "" + statusBar(), Toast.LENGTH_LONG).show();

似乎有效。

<强>更新

尝试这个,如果不起作用,请尝试另一个。

private int statusBar() {
    Rect rectgle= new Rect();
    Window window= getWindow();
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
    int statusBar = rectgle.top;
    return statusBar;
}

第二

private int statusBar() {
    Rect rectgle= new Rect();
    Window window= getWindow();
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
    int StatusBarHeight= rectgle.top;
    int contentViewTop= 
        window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
    int statusBar = contentViewTop + StatusBarHeight;
    return statusBar;
}

答案 1 :(得分:0)

试试这个:

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

然后Toast statusBarHeight