Android 3.2中的Display和DisplayMetrics返回错误的尺寸?

5
我在我的应用程序中使用了以下代码来获取全屏幕大小:

我在我的应用程序中使用了以下代码来获取全屏幕大小

Display display = getWindowManager().getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();

在我的平板电脑上,直到 osVersion = 3.1,此代码返回 w=1280 和 h=800。
现在,在升级到 Os3.2后,这些值为1280x752(横屏时)。
因此,从3.1到3.2,这个调用似乎有所改变:它现在返回可用空间而不是全屏大小。
我尝试使用DisplayMetrics和widthPixels / heigthPixels,但它们返回相同的值。同时使用全新的display.getSize(Point p)也返回相同的值。
我还尝试更改清单文件中的minSdkVersion和targetSdk到不同的值,但没有成功。
如何在Android os 3.2中获取全屏大小?
我的应用程序应与Android os >=1.6兼容。

2
我自己发现这是一个错误修复,而不是一个错误。 [http://groups.google.com/group/android-developers/browse_thread/thread/84dc17ef15867f1c/b2af70f1d7233cb2?lnk=gst&q=screen%20size%203.2#b2af70f1d7233cb2]这很有道理,因为3.1平板电脑没有硬件按键,只有屏幕上的按键用于导航(主页、返回等)。 - Fabio
1个回答

3

由于软按键的存在,两者之间存在差异。3.2 版本在查询可用屏幕尺寸时会考虑到软按键,而 3.1 版本不会。

如果您将平板电脑旋转到横向模式,您会发现报告的数字也会发生变化。


太棒了,我讨厌“我需要从高度中减去通知栏”的问题。好知道! - WarrenFaith
1
最糟糕的是,由于宽度/高度不匹配,专用的WXGA资源(values-mdpi-1280x800)不再被考虑。 - david

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接