【发布时间】:2016-08-25 10:25:40
【问题描述】:
我在onResume 中为我的安卓应用设置了全屏沉浸模式,如下所示:
@Override
public void onResume() {
super.onResume();
final 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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
decorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) { 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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
});
}
OnSystemUiVisibilityChangeListener() 还实现了在用户向内滑动时立即隐藏栏。由于应用程序将在自助服务终端设备上运行,因此确保用户无权访问主页/返回或任何系统信息非常重要。
上面的工作正常,但是当显示DialogFragment 时,系统和导航栏变得可见,直到对话框可见。我怎样才能确保酒吧无论如何都隐藏起来。另外,有没有更好的方法来处理全屏模式并完全禁用对系统、导航、操作、应用栏的访问。
编辑: 通过在我的对话框类中使用以下代码,我设法隐藏了对话框上的条:
@Override
public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
int uiOptions = 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;
window.getDecorView().setSystemUiVisibility(uiOptions);
}
但是在滑出视图之前,有一个短暂的时间条会变得可见。我怎样才能让酒吧根本不显示。
【问题讨论】:
-
试试这个解决方案。希望这会奏效。 stackoverflow.com/a/32925108/5124050
标签: android android-fullscreen android-immersive