Android - 切换沉浸式模式打开操作栏覆盖模式

时间:2018-05-15 13:28:35

标签: android android-immersive

我正在尝试在我的Android应用程序中实现沉浸式(全屏)模式,而且我遇到了一个我无法解决的问题。

我正在关注the Immersive Mode guide and sample apps from the Android Docs,它主要起作用,但是当退出沉浸式模式时,我的应用上的应用栏(操作栏)仍然处于叠加模式(当活动时它不会以叠加模式启动启动),从而模糊了我的活动的一些内容,我无法弄清楚当我退出沉浸式模式时,我需要向setSystemUiVisibility()提供的UI标志和按位运算符的组合,以使其将我的应用程序放回其中初始状态(应用栏未处于叠加模式)。

我有demo application that shows the problem,相关代码位如下:

使用内置的工具栏/应用栏/操作栏设置样式,但我尝试使用自己的自定义工具栏并将其设置为支持操作栏,结果相同。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

单击活动中的“切换沉浸式模式”按钮将运行以下方法,该方法遵循Android指南(请参阅上面的链接)以了解沉浸式模式。

private void toggleImmersiveMode() {
    View decorView = getWindow().getDecorView();

    if (mIsImmersiveEnabled) {
        // Immersive Mode is on, turn it off.
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    } else {
        // Immersive Mode is off, turn it on.
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE
                // Set the content to appear under the system bars so that the
                // content doesn't resize when the system bars hide and show.
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                // Hide the nav bar and status bar
              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN);
    }

    mIsImmersiveEnabled = !mIsImmersiveEnabled;

}

当我进入沉浸式模式(我想要那个功能)时,我不是试图禁止应用栏进入叠加模式,但是当退出沉浸式模式时我无法弄清楚如何让它重新关闭叠加模式。任何帮助,将不胜感激。

以下是演示应用的一些截图:

初次发布时

initial launch

进入全屏模式后

Fullscreen Mode

退出全屏模式后

After Exit Fullscreen

0 个答案:

没有答案