【问题标题】:How to hide Navigation Bar permanently in Jelly Bean (before KitKat) in Android Activity?如何在 Android Activity 中永久隐藏 Jelly Bean(在 KitKat 之前)中的导航栏?
【发布时间】:2015-08-17 14:00:45
【问题描述】:

我为 android 制作了一个全屏应用程序,它隐藏了支持 API 16(从 Jelly Bean 开始)的导航栏和状态栏。 我知道如果我想从 KitKat 开始隐藏导航栏和状态栏,我可以使用以下代码:

getWindow().getDecorView().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_IMMERSIVE_STICKY);

但该代码不适用于 Jelly Bean,它只会隐藏一次条形图,一旦您触摸屏幕,它们就会重新出现。 所以我知道下面的代码支持果冻豆,但它只隐藏了状态栏:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

谁能告诉我如何在果冻豆上永久隐藏导航栏?

【问题讨论】:

标签: android fullscreen navigationbar android-4.1-jelly-bean


【解决方案1】:

当状态栏/导航栏出现在屏幕上后,尝试再次隐藏它。

以下是如何监听 UI 变化的信息:

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

相关部分:

View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // system bars are visible
            // hide them again, maybe with some delay?
        }
    }
});

【讨论】:

  • 我在 onCreat() 中尝试了这个,方法是添加这个而不是上面的 cmets:getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);还是不行!
  • 你看到这个回调被调用了吗,即添加 Log.d(...) 并查看日志中是否有此消息...
  • 它没有显示在日志中,整个方法“onSystemUiVisibilityChange”没有被调用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 2019-07-27
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多