multi-window模式下,Window高度不包含状态栏高度

When in multi-window mode, Window height does not include status bar height

我的activity画在状态栏下面,是半透明的

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

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

这个高度是正确的,因为它包括内容高度和状态栏高度,因为我在那里绘图并且我的 window 有正确的标志。

在 multi-window 模式下,在 Nougat 中,如果我的应用程序是顶部的,它在状态栏下仍在绘制,但是height 将不包括该值。

如何在 multi-window 模式下获得真实的 window 高度而不弄脏?

备注

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

更多信息

实际上,在进入 multi-window 后,height 值将永远不会包含状态栏,即使您退出 multi-window 也是如此。例如,在 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 问题 (219133) 关于 Display class 在 Android 7.0 预览中使用 multi-window 模式时的问题.

开发团队表示他们修复了错误和补丁 "will be available in future releases"。到目前为止(版本 7.0 和 7.1),错误行为仍然存在。