Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android 4.0、4.5和5.0设备的不同布局_Java_Android_Android Layout_Layout - Fatal编程技术网

Java Android 4.0、4.5和5.0设备的不同布局

Java Android 4.0、4.5和5.0设备的不同布局,java,android,android-layout,layout,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

我需要不同的布局设备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
但屏幕大小不同,布局看起来也不一样

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

编辑:

在这种情况下,布局看起来非常不同,因为其中一部手机在设备设置中更改了字体大小。。GG优秀的测试人员:)


谢谢。向上投票。

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


始终尝试使用RelativeLayout而不是FrameLayout,并将项目相对于设备进行定位。项目大小应为包裹内容,以便自动缩小到设备。

您可以根据像素的精确宽度提供不同的布局,因为您已经知道它们:

示例

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)

阅读有关索尼Xperia Sp的官方android文档,我有W:360.0 H:592.0索尼Xperia Sp我有W:360.0 H:592.0

索尼Xperia Z我有同样的结果W:360.0H:592.0

这不是屏幕大小。。这完全取决于您的设备屏幕分辨率。 如果保持此屏幕分辨率,则应根据需要创建不同的布局或值文件

value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi

或 drawable-sw320dp-hdpi
可抽出式-sw320dp-xhdpi

可抽出式-sw320dp-xxhdpi


阅读培训教程-旁注,没有Android 4这样的东西。5@mhenryk我猜OP指的是屏幕对角线4.5英寸,我知道。但我说过两个不同的设备(和尺寸)在dp中具有相同的宽度。因此,在我的示例sw320dp中使用相同的布局。但我希望索尼SP和Z的版本有所不同。啊,好吧,他们有不同版本的android吗?然后,您可以为平台版本添加一个额外的限定符。value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi它有帮助