我需要在现有的普通 Activity
之上显示一个 DialogFragment
(非全屏且 ActionBar
可见)。
我的 DialogFragment
需要全屏显示,因此我使用以下行来实现该结果:
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
在 ICS 上一切正常,我的 DialogFragment
全屏显示,当我关闭它时我的 Activity
内容没有调整大小所以没有布局故障(因为它应该是因为我设置的全屏标志应该只影响 DialogFragment
所在的窗口。
在 Jelly Bean 上,当我关闭 DialogFragment
时,我看到我的 Activity
内容被调整大小以覆盖状态栏,因此当它尝试恢复到原来的大小。
我认为这可能与新系统 UI 标志(SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
等)的引入有关,但我无法弄清楚如何在 Jelly Bean 上也具有相同的 ICS 行为......任何想法?
最佳答案
找到解决方法,您需要调用:
view.setFitsSystemWindows(true);
在为您的窗口设置全屏标志之前,以同样的方式:
view.setFitsSystemWindows(false);
清除它之前。
view
必须是 Activity
中的 View (不是您的 DialogFragment
!)并且它必须可见(参见 setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) does not work )
不过,在动画关闭 DialogFragment
时仍然存在一些故障,这些故障在 ICS 上不存在……但我认为这是另一个问题……
关于java - 使用 Window 的 FLAG_FULLSCREEN 时 ICS 和 Jelly Bean 之间的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18678454/