我没有480x800设备,所以我使用genymotion仿真器代替。Nexus的规格是480x800,但是当我在应用程序中得到屏幕大小时,它说的是480x728?我想知道这是否也发生在实际设备上,还是仅仅是genymotion模拟器中的一个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>这是布局文件
<?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>发布于 2014-01-05 08:12:32
实际高度和视图高度的差异是屏幕底部的软件按钮栏的高度(为48 dp)。
确定实际屏幕高度的正确方法取决于设备API版本,并在这里描述:How to get real screen height and width?
使用以下代码片段:
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;
}发布于 2014-01-05 06:14:55
这显示了活动视图的维度。宽度是正确的,因为该视图跨越显示的全部宽度。但是,高度不是完全分辨率的高度,因为它是完全高度,减去状态栏的高度,减去操作栏的高度。如果要获得显示的真正分辨率,请为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(); // deprecatedhttps://stackoverflow.com/questions/20930688
复制相似问题