【问题标题】:Android different layouts for 4.0, 4.5 and 5.0 devices适用于 4.0、4.5 和 5.0 设备的 Android 不同布局
【发布时间】:2016-08-31 04:23:30
【问题描述】:

我需要设备 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 玩得很好的测试人员:)

谢谢。赞成票。

【问题讨论】:

标签: java android android-layout layout


【解决方案1】:

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

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

【解决方案2】:

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

示例

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 个不同的设备(和尺寸)在 dp 中具有相同的宽度。所以在我的示例 sw320dp 中使用相同的布局。但我希望 Sony SP 和 Z 有所不同。
  • 啊,好吧,他们有不同版本的android吗?然后你可以为平台版本添加一个额外的限定符
【解决方案3】:

Sony 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。

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

如果保持这个屏幕分辨率,你应该创建不同的布局或值文件

value-sw320dp-hdpi 价值-sw320dp-xhdpi 值-sw320dp-xxhdpi

drawable-sw320dp-hdpi
可绘制-sw320dp-xhdpi

drawable-sw320dp-xxhdpi

【讨论】:

  • value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi 有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
相关资源
最近更新 更多