[英]Programmatically enable/disable Immersive Mode
我想让我的 Android 应用程序全屏显示,但只在某个屏幕(我的设置屏幕)上显示 android 导航栏。 我知道将导航栏永久隐藏在屏幕上很危险,但我想知道这是否可行。 我已经研究过让我的设备生根并使用 Xposed 框架。
有没有办法以编程方式禁用导航栏或“粘滞模式”,然后重新启用?
编辑:我已经查看了 Android 沉浸式模式,但如果用户触摸边缘,导航栏似乎仍会显示。 我想删除导航栏的任何提示,直到它们进入我的设置屏幕。
是的,这是可能的。 使用下面的代码片段来实现所需的功能。
// 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);
}
有关更多详细信息,请参阅以下谷歌文档:
https://developer.android.com/training/system-ui/immersive.html
编辑 1:要永久隐藏它,您可以尝试这样的操作(Hacky)
decorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
hideSystemUI();
}
});`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.