java - 使用 Window 的 FLAG_FULLSCREEN 时 ICS 和 Jelly Bean 之间的不同行为

标签 java android view android-4.0-ice-cream-sandwich android-4.2-jelly-bean

我需要在现有的普通 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/

相关文章:

java - Spock 断言对象列表在字段中具有精确值

android - 使用进度条作为 ImageView 的边框

android - Cordova 和proguard : Camera Plugin NPE on takePicture

asp.net - 在 View 中显示经过身份验证和匿名的内容

android - 创建 cutomView 时不添加View?

java - DDD 聚合 ID 和外键

java - 整个网络应用程序的自动完成功能

java - 使用 JavaFX 部署打包外部文件

java - 如何绘制 Path 并集的轮廓

swift - UITextView:达到固定宽度时自动换行