Android Nexus-S/Galaxy SII 480x800分辨率在genymotion emulator上显示480x728?

Android Nexus-S/Galaxy SII 480x800分辨率在genymotion emulator上显示480x728?,android,android-emulator,genymotion,Android,Android Emulator,Genymotion,我没有480x800设备,所以我改用genymotion emulator。Nexus-S的规格是480x800,但当我在应用程序中获得屏幕大小时,它会显示480x728?我想知道这是否是实际设备上发生的事情,还是只是genymotion emulator中的一个bug @Override public void onClick( View view ) { if ( view == null ) return; View v1 = getActivity().

我没有480x800设备,所以我改用genymotion emulator。Nexus-S的规格是480x800,但当我在应用程序中获得屏幕大小时,它会显示480x728?我想知道这是否是实际设备上发生的事情,还是只是genymotion emulator中的一个bug

@Override
public void onClick( View view )
{
    if ( view == null )
        return;

    View v1 = getActivity().findViewById( R.id.bg );
    Toast.makeText( getActivity(), "height:" + v1.getHeight() + " width:" + v1.getWidth(), Toast.LENGTH_SHORT ).show();
}
我的style.xml中有这些

    <item name="android:windowFullscreen">true</item>
    <item name="android:windowNoTitle">true</item>
true
符合事实的
这是布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >
</RelativeLayout>

这显示了“活动”视图的维度。宽度是正确的,因为该视图跨越了显示器的整个宽度。但是,高度不是全分辨率高度,因为它是全高度,减去状态栏的高度,再减去操作栏的高度。如果您想要显示的真实分辨率,请使用API级别13及以上的以下代码:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
如果要支持低于API 13的版本,可以使用:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

实际高度和视图高度的差值是屏幕底部软件按钮栏的高度(48 dp)

确定实际屏幕高度的正确方法取决于设备API版本,如下所述:

使用以下代码段:

int screenWidth = 0;
int screenHeight = 0;
if (Build.VERSION.SDK_INT >= 11) {
    Point size = new Point();
    try {
        this.getWindowManager().getDefaultDisplay().getRealSize(size);
        screenWidth = size.x;
        screenHeight = size.y;
    } catch (NoSuchMethodError e) {
        Log.i("error", "it can't work");
    }

} else {
    DisplayMetrics metrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    screenWidth = metrics.widthPixels;
    screenHeight = metrics.heightPixels;
}

你能把相关的代码贴到屏幕大小的地方吗?我正在禁用actionbar和title。所以我想情况并非如此。。。有关代码详细信息,请参阅已编辑的问题。状态栏是否仍然显示?能否发布为添加的布局定义R.id.bgxml的XML。好的,这很奇怪。你能运行上面的代码看看是否由于某种原因,外形尺寸是错误的吗?如果它返回正确的480x800分辨率,我就被难倒了。那么,我该如何去掉这些软件按钮呢?它也在实际设备上吗?这不适用于Nexus S,因为它有物理按钮。Genymotion Nexus S emulator不是实际的设备副本,它只是带有一些调整的操作系统映像,是的,它显示软件菜单按钮。软件按钮条带高度为48dp而非48px,hdpi密度为48*1.5=72 px。无法在非根设备上隐藏这些软件按钮