在多窗口模式下,窗口高度不包括状态栏高度

时间:2016-12-16 17:33:41

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

我的活动是在状态栏下绘制的,这是半透明的。

我使用以下方式获得窗口高度:

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

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

在多窗口模式下,在Nougat中,如果我的应用程序是最顶层的,那么状态栏下的仍在绘制,但height将不包含该值。< / p>

如何在多窗口模式下获得实际窗口高度而不会变脏?

注意

我不想要屏幕高度,例如,通过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级别,错误报告)。

1 个答案:

答案 0 :(得分:1)

在Android 7.0预览中使用多窗口模式时,有一个关于Display类问题的AOSP问题(219133)。

开发团队声明他们修复了错误,补丁“将在以后的版本中提供”。到目前为止(版本7.0和7.1),有缺陷的行为仍然存在。