我的活动是在状态栏下绘制的,这是半透明的。
我使用以下方式获得窗口高度:
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级别,错误报告)。
答案 0 :(得分:1)
在Android 7.0预览中使用多窗口模式时,有一个关于Display
类问题的AOSP问题(219133)。
开发团队声明他们修复了错误,补丁“将在以后的版本中提供”。到目前为止(版本7.0和7.1),有缺陷的行为仍然存在。