【发布时间】: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