【问题标题】:When in multi-window mode, Window height does not include status bar height在多窗口模式下,窗口高度不包括状态栏高度
【发布时间】:2017-05-02 13:24:35
【问题描述】:

我的活动在半透明的状态栏下方绘制。

我正在使用以下方法获取窗口高度:

WindowManager manager = activity.getWindowManager();
DisplayMetrics metrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;

这个高度是正确的,其中包括内容高度和状态栏高度,因为我正在那里绘制并且我的窗口具有正确的标志。

在多窗口模式下,在 Nougat 中,如果我的应用是顶部的应用,它在状态栏下仍在绘制,但height 不会包含该值。

如何在不弄脏的情况下获得多窗口模式下的真实窗口高度?

注意

我不想要屏幕高度,例如返回通过 Display.getRealSize()。我想要窗口高度。但如果我的窗口在状态栏下方绘制,则该值必须包括状态栏高度,就像关闭多窗口时一样。

更多信息

实际上,在进入多窗口后,height 值将永远不会包含状态栏,即使您之后退出多窗口也是如此。例如,在 Nexus5X 上:

// Start the app in normal mode
height = 1794; // Everything except nav bar. OK!
// Go in multi-window mode.
// Go out of multi-window mode.
height = 1730; // Status bar height is not there anymore. :-(

看起来像一个肮脏的臭虫。在那种情况下,我想知道是否有人对此了解更多(设备、API 级别、错误报告)。

【问题讨论】:

  • 看起来有人提交了与您的问题相关的AOSP issue
  • @0X0nosugar 是的,看起来一样。我想你可以发布一个答案。

标签: android android-layout android-windowmanager android-7.0-nougat android-statusbar


【解决方案1】:

在 Android 7.0 预览版中使用多窗口模式时,Display 类存在 AOSP 问题 (219133)。

开发团队表示他们已修复该错误,并且补丁“将在未来的版本中提供”。到目前为止(版本 7.0 和 7.1),错误行为仍然存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多