显示/隐藏状态栏不应影响活动状态

时间:2014-01-08 09:15:02

标签: android statusbar

我正在使用webview在活动中加载电子书。现在,当我设置一个事件来显示/隐藏状态栏时,它会调整webview的大小。

隐藏状态栏时,它会向上推动一个活动,同时显示状态栏,它会按下活动布局。

我该如何防止这种情况?

2 个答案:

答案 0 :(得分:3)

您可以使用FLAG_LAYOUT_IN_SCREEN将活动布局设置为在Android 4.0上使用相同的屏幕区域,并在启用FLAG_FULLSCREEN时降低可用范围。这可以防止您的内容在状态栏隐藏和显示时调整大小。

在Android 4.1及更高版本中,您可以将应用程序的内容设置为显示在状态栏后面,以便在状态栏隐藏和显示时内容不会调整大小。为此,请使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

有关详细信息,请参阅Hiding the Status Bar,并参阅Responding to UI Visibility Changes

答案 1 :(得分:1)

我得到了解决方案,请参考以下代码:

private void setNavVisibility(boolean visible) {

    int newVis = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    //In case of visibility false, hide status bar, action bar and bottom layout
    if (!visible) {
        newVis |= View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN;
        relativeLayoutBottom.startAnimation(fadeOut);
    }
    else
        relativeLayoutBottom.startAnimation(fadeIn);
    rootView.setSystemUiVisibility(newVis);
}

点击活动,请致电

   int curVis = rootView.getSystemUiVisibility();

   setNavVisibility((curVis&View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0);