使用SystemUiHider保持导航栏隐藏

Jon*_*ono 8 android fullscreen uinavigationbar android-fullscreen

在旧版本的Android中,有必要使用:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"在清单中使标题栏消失.

在较新的ADT版本中,我注意到了一个SystemUiHider类,它允许您调用它的hide()方法,不仅删除标题栏,还删除操作栏和导航栏.

我正在尝试编写一个全屏应用程序,我希望保持全屏(对于自助服务终端实施),除非按下一个小的隐藏按钮.

我尝试过采用标准的FullscreenActivity(从新的android项目向导生成),并阻止UI以多种方式重新出现:

  • 打电话给mSystemUiHider.hide()setOnVisibilityChangeListener(去尝试,并立即隐藏UI当它检测到的能见度的变化)
  • 设置:( AUTO_HIDE_DELAY_MILLIS = 0如果可见则尝试立即隐藏)
  • 防止mSystemUiHider.show();onClick方法内的调用contentView.setOnClickListener(以防止它被显示)
  • 我也在setSystemUiVisibilityandroid.view的文档中看到了这个例子(如果显示或者可见性被更改,再次尝试立即隐藏它)

它们似乎都不起作用(当尝试其中任何一个时,Android默认为导航栏的低配置模式.

我知道他们可能不希望开发人员做我正在尝试做的事情,但我希望我可以扩展SystemUiHider(和/或SystemUiHiderBase)并覆盖show()方法,除非传递一个true标志,否则基本上不显示.我似乎无法在这些类中找到任何文档(也许是因为它们是实用程序类?).

Cha*_*ger 1

与设备的任何交互都会返回导航栏。

https://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_HIDE_NAVIGATION

  • 我从我尝试过的四种方法的实验中认识到了这一点。我的问题是是否可以覆盖此行为(有或没有根访问权限)。 (5认同)