我尝试设置systemUIView(View.GONE)并使用沉浸式全屏模式。但是,用户可以通过触摸屏幕底部来返回导航栏。我上面提到的应用程序可以在没有root或设置默认启动器的情况下隐藏它。
答案 0 :(得分:1)
好的,我终于发现了一种闷热,这就是它的完成方式:
使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY来隐藏导航栏,如下所示,您可以将代码放在onResume of activity中
查看decorView = getWindow()。getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions);
然后,使用WindowManger添加系统错误窗口并将其叠加在外部
您可以将此不可避免的视图放在任何您喜欢的位置,但如果您想在用户锁定屏幕时执行此操作,请添加此标记:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Etvoilà
答案 1 :(得分:0)
好吧,我从来没有实现过这个,但似乎你需要设置一些其他标志来获得这种观点:
当您使用 SYSTEM_UI_FLAG_IMMERSIVE 标志时,它会根据您设置的其他 UI 标记隐藏系统栏( SYSTEM_UI_FLAG_HIDE_NAVIGATION , SYSTEM_UI_FLAG_FULLSCREEN ,或两者兼而有之)。当用户在系统条区域中向内滑动时,系统条重新出现并保持可见。
以下是可用于设置这些标记的代码段:
// 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.
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 // 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() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
有关更多信息,请从Android开发者网站查看Using Immersive Full-screen Mode。
希望得到这个帮助。