我需要在现有普通DialogFragment
之上显示Activity
(非全屏且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行为...任何想法?
答案 0 :(得分:2)
找到解决方法,您需要致电:
view.setFitsSystemWindows(true);
在将全屏标志设置到窗口之前,以相同的方式:
view.setFitsSystemWindows(false);
清除之前。
view
必须是Activity
内的一个视图(不是您的DialogFragment
!),且必须是可见的(请参阅setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) does not work)
然而,在ICS上没有出现DialogFragment
的解雇动画时会有一些小问题......但我认为这是另一个问题......