如何将我的UI置于Android状态栏下方?

时间:2015-08-27 23:18:37

标签: android

我发现many questions围绕" top" (覆盖)和在(被模糊)状态栏中,深度方式。但是,如果您从顶部发出类似通知的活动,那么如何定位它以使其自动落在状态栏之外?

否则,状态栏会重叠并遮盖刚下来的用户界面。A screenshot of a UI element coming down from the very top of the app but obscured by the status bar.

我是否只需要通过\ status-bar height \使UI更高来处理这种重叠?

2 个答案:

答案 0 :(得分:1)

您必须以编程方式将padding添加到您的活动中,以防止这种情况发生。 我想出了一种方法,通过从许多来源收集信息,甚至在Stack Overflow中也是如此。

尝试根据您的需求进行调整:

private void fixActivityPadding() {
    // gets additional padding (final padding: status bar height + custom padding)
    int padX = getResources().getDimensionPixelSize(R.dimen.welcome_padding_x);
    int padY = getResources().getDimensionPixelSize(R.dimen.welcome_padding_y);
    // gets navigation and status bar heights
    int navBarHeight = getResourceHeight("navigation_bar_height");
    int statusBarHeight = getResourceHeight("status_bar_height");

    // gets the layout in the Activity
    View layout = findViewById(R.id.activity_layout);
    // sets padding accordingly, considering orientation (nav bar position)
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        layout.setPadding(padX, statusBarHeight + padY, padX, navBarHeight + padY);
    } else {
        layout.setPadding(padX, statusBarHeight + padY, navBarHeight + padX, padY);
    }
}

// helper method
private int getResourceHeight(String identifier) {
    int result = 0;
    int resourceId = getResources().getIdentifier(identifier, "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

我不确定Notification Activity的含义,但我相信这对您有所帮助。

答案 1 :(得分:0)

我认为这只是WindowManager.LayoutParams.FLAG_FULLSCREEN。 将他添加到您的活动中:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

当用户从顶部滑动时,状态栏会再次显示。