9

我想让我的 Android 应用全屏显示,但只在某个屏幕(我的设置屏幕)上显示 android 导航栏。我知道在屏幕上永久隐藏导航栏很危险,但我想知道这是否可行。我已经研究过植根我的设备并使用 Xposed 框架。

有没有办法以编程方式禁用导航栏或“粘性模式”,然后再重新启用?

编辑:我查看了 Android 沉浸式模式,但如果用户触摸边缘,导航栏似乎仍会显示。我想删除导航栏的任何提示,直到他们进入我的设置屏幕。

4

1 回答 1

7

对的,这是可能的。使用下面的代码片段来实现所需的功能。

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
   View decorView = getWindow().getDecorView();
    decorView.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 // hide nav bar
            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

有关更多详细信息,请参阅以下 google 文档:

https://developer.android.com/training/system-ui/immersive.html

编辑1:要永久隐藏它可能是你可以尝试这样的事情(Hacky)

decorView.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {

                            hideSystemUI();


                    }
                });`
于 2016-07-07T19:59:00.027 回答