android - 隐藏导航栏而不在android上生根

标签 android navigationbar android-fullscreen

我想为 Android 平板电脑制作全屏应用程序,我尝试隐藏导航栏和 4.0+。我阅读了类似的问题和答案,但我发现的内容对我不起作用。如果不可能永远隐藏导航栏,我该如何隐藏它,然后通过从底部滑动使其可见?我在一些游戏中看到,我认为这是可能的。到目前为止,我尝试了这个,起初它隐藏了导航栏,但是当我触摸屏幕时,导航栏再次变得可见,我不想要它。

decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

我也试过这个,但对我来说还是有用的

decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener() {
        @Override
        public void onSystemUiVisibilityChange(int visibility) {
            // Note that system bars will only be "visible" if none of the
            // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
            if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN;
          decorView.setSystemUiVisibility(uiOptions);


            } else {
                int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN;
          decorView.setSystemUiVisibility(uiOptions);
            }
        }
    });

如何通过从底部滑动或永远隐藏来隐藏它并使其可见? 请给我一个建议。提前致谢

最佳答案

我相信你所描述的你在一些游戏中看到的被称为“沉浸式模式”。导航栏完全消失,屏幕边缘的一个手势将其恢复。此功能从 Android 4.4 版开始可用。

在Android 4.4之前,从Android 4.0版本开始,可以使用“Hide Navigation”标志,会暂时隐藏导航栏。这种模式的问题是与屏幕的任何交互都会导致导航栏重新出现。这对于需要与屏幕进行大量交互的应用(如大多数游戏)当然不是很有用。

我通常使用以下函数来进入和退出沉浸式模式:

private void hideSystemUI() {
    mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE); // This flag only for 4.4+
}

private void showSystemUI() {
    mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

然后在我的 onCreate 中,我设置 mDecorView 并调用 hideSystemUI:

    mDecorView = getWindow().getDecorView();
    hideSystemUI();

尽管代码与您所拥有的类似,因此这可能无济于事。这里有关于该主题的详细视频,包括更详细的源代码示例:https://www.youtube.com/watch?v=cBi8fjv90E4

关于android - 隐藏导航栏而不在android上生根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326880/

相关文章:

android - 数据未在 android studio 的 firebase 数据库中显示(未上传)

java - 开发万物谷歌的平台?

android - 错误:(15, 47) error: cannot find symbol variable sample_text

swift - 带有大标题 iOS 11 的导航栏图像

android - 如何在 Android 上制作全屏 Activity

android - 在Flutter中选择包含ListTile()的Card()

ios - 如何将分段控件添加到导航栏? (iOS)

c# - 我可以隐藏 Xamarin.Auth NavigationBar 吗?

android - Android中的全屏 Activity ?

android - 禁用分屏 - 显示 "Full screen display"