在为平板电脑开发客户调查应用程序时,我意识到我必须禁止通知面板被拉出并隐藏底部导航以防万一,因为所有那些有趣的客户都想成为一个聪明的 ***。
我正在使用无根设备,因此不能选择使用像this answer这样的反射。
虽然添加
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
可以解决问题,但它也会禁用其他所有功能。
我首先要求应用程序全屏显示,只是为了隐藏顶部栏,但这对底部导航栏没有任何作用。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
因此,我求助于使用沉浸式全屏模式。它确实隐藏了顶部和底部栏,但是当用户向上或向下滑动时,它们会再次出现。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
该设备在Android 4.4上运行