我正在尝试让我的应用在真正的全屏(无状态栏,无操作栏)和"正常模式"之间切换。 (操作栏和状态栏)。为此,我在叠加模式下设置了一个操作栏,我允许用户切换操作栏和状态栏:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
actionBar.show();
..和关闭:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
actionBar.hide();
只需一个例外就可以了:无论何时发生这些操作,都会调整实际布局的大小。好吧,还有一个标志只是为了这个,所以我添加到我的onCreate()
:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
好的,现在调整大小不再是一个问题,但是现在我的操作栏在状态栏上都会被一半遮挡:
我有什么遗失的东西吗?如何让操作栏正确显示在状态栏的正下方?
答案 0 :(得分:7)
经过反复试验,我找到了解决方案。这会隐藏操作栏和状态栏,而不会导致图像调整大小。
private void toggleFullscreen(boolean on) {
ActionBar actionBar = getActionBar();
View decorView = getWindow().getDecorView();
if (on) {
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN);
actionBar.hide();
}
else {
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
actionBar.show();
}
}