适用于4.0,4.5和5.0设备的Android不同布局

时间:2016-08-30 08:25:30

标签: java android android-layout layout

我需要设备4.0,4.5和5.0的不同布局。

但是我使用以下方法检查了屏幕尺寸宽度:

Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);

float density  = getResources().getDisplayMetrics().density;
float dpWidth  = outMetrics.widthPixels / density;

并且

Sony Xperia Sp I have W: 360.0 H:  592.0
Sony Xperia Z I have the same result W: 360.0 H:  592.0

但屏幕尺寸不同,布局看起来非常不同。

如何正确地为此设备和其他设备尺寸创建不同的布局?

编辑:

在这种情况下,布局看起来非常不同,因为其中一部手机在设备设置中更改了FONT SIZE .. GG很好地播放了测试人员:)

总而言之。投票。

3 个答案:

答案 0 :(得分:1)

Android使用与密度无关的像素(dp),因此应该很容易适应不同的尺寸。在您的res文件夹中创建layout-w320p等子文件夹,并在该文件夹中自定义您的布局以适应不同的屏幕尺寸。

始终尝试使用RelativeLayout而不是FrameLayout并相对于设备定位项目。项目大小应该是wrap_content,以便它自动缩小到设备。

答案 1 :(得分:1)

您可以根据确切的宽度(以像素为单位)提供不同的布局,因为您已经了解它们:

<强>实施例

res/layout/main_activity.xml           # For handsets (smaller than 600dp available width)
res/layout-sw600dp/main_activity.xml   # For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml   # For 10” tablets (720dp wide and bigger)

res/layout/main_activity.xml         # For handsets (smaller than 600dp available width)
res/layout-w600dp/main_activity.xml  # Multi-pane (any screen with 600dp available width or more)

阅读有关Supporting Multiple Screens

的官方Android文档

答案 2 :(得分:1)

索尼Xperia Sp我有W:360.0 H:592.0Sony Xperia Sp我有W:360.0 H:592.0

  

Sony Xperia Z我的结果相同W:360.0 H:592.0。

     

这不是屏幕尺寸..这完全取决于您的设备屏幕分辨率。

如果保持此屏幕分辨率,则应创建不同的布局或值文件

  

值-sw320dp-HDPI   价值sw320dp-xhdpi   值-sw320dp-xxhdpi

OR

  

抽拉-sw320dp-HDPI
  抽拉-sw320dp-xhdpi

     

抽拉-sw320dp-xxhdpi