当前位置 : 主页 > 手机开发 > android >

android – 状态栏遮盖了Overlay Action Bar

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在尝试让我的应用程序在真正的全屏(无状态栏,无操作栏)和“正常模式”(操作栏和状态栏)之间切换.为此,我在叠加模式下设置了一个操作栏,我允许用户切换操作栏和状态栏: get
我正在尝试让我的应用程序在真正的全屏(无状态栏,无操作栏)和“正常模式”(操作栏和状态栏)之间切换.为此,我在叠加模式下设置了一个操作栏,我允许用户切换操作栏和状态栏:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);     
actionBar.show();

..并且关闭:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
actionBar.hide();

只需一个例外就可以正常工作:无论何时发生这些操作,都会调整实际布局的大小.好吧,还有另一个标志,显然只是为了这个,所以我添加到我的onCreate():

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

好的,现在调整大小不再是一个问题,但是现在我的操作栏被状态栏遮住了一半,只要两者都打开:

有什么我想念的吗?如何使操作栏正确显示在状态栏的正下方?

经过反复试验,我找到了解决方案.这会隐藏操作栏和状态栏,而不会导致图像调整大小.

private void toggleFullscreen(boolean on) {
    ActionBar actionBar = getActionBar();
    View decorView = getWindow().getDecorView();

    if (on) {
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_FULLSCREEN);
        actionBar.hide();
    }
    else {
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        actionBar.show();
    }

}
网友评论