3

我需要在现有法线(非全屏且可见)DialogFragment之上显示 a 。 我需要全屏显示,因此我使用以下几行来实现该结果:ActivityActionBar
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 行为......知道吗?

4

1 回答 1

2

找到了解决方法,您需要调用:

view.setFitsSystemWindows(true);

在将全屏标志设置到您的窗口之前,以同样的方式:

view.setFitsSystemWindows(false);

在清除它之前。

view必须是您Activity(不是您的DialogFragment!)内部的视图,并且它必须是可见的(请参阅setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) 不起作用

DialogFragment尽管如此,在为ICS 上不存在的动画解除动画时仍然存在一些小故障......但我认为这是另一个问题......

于 2013-09-08T00:00:52.180 回答