【问题标题】:Different behavior between ICS and Jelly Bean when using Window's FLAG_FULLSCREEN使用 Window 的 FLAG_FULLSCREEN 时 ICS 和 Jelly Bean 之间的不同行为
【发布时间】:2013-09-07 22:19:02
【问题描述】:

我需要在现有的普通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 行为......有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

    view.setFitsSystemWindows(true);
    

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

    view.setFitsSystemWindows(false);
    

    在清除之前。

    view 必须是您的Activity(不是您的DialogFragment!)中的一个视图,并且它必须是可见的(参见setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) does not work

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多