我的Xml设计在所有Android设备上都不能正常工作?

4

在我的项目中,我的设计在安卓HTC 2.3.4上运行良好,但在4.0.1版本上,我的屏幕没有显示完整(一些设计从底部被剪切了)。为什么会这样?


没有任何代码示例,任何人都很难帮助您。 - CharliePrynn
2
请在此处发布您的layout.xml文件,也许我们可以给您一个答案! - caiocpricci2
3个回答

21

由于您没有发布任何代码,我将为您简要介绍Android布局和资源。

您需要为应用程序创建多个资源。 Android有4种分辨率(ldpi、mdpi、hdpi和xhdpi)和4种通用屏幕大小(小、中、大和超大)。因此,您需要创建4个布局(或3个布局,如果您不打算支持平板电脑,因为平板电脑属于超大类别),以支持这些屏幕大小。

以下是一个一般的指南:

将小型、中型、大型和超大型的布局放在res/文件夹中,如下所示:

res/layout/sample_layout.xml             // default layout
res/layout-small/sample_layout.xml       // layout for small screen size
res/layout-large/sample_layout.xml       // layout for large screen size
res/layout-xlarge/sample_layout.xml      // layout for extra large screen size

你还可以使用 res/layout-land/sample_layout.xml 来适配所有屏幕尺寸的横屏方向,或者像这样针对特定屏幕尺寸的横屏布局 res/layout-medium-land/sample_layout.xml

注意所有布局文件都有相同的名称。

一旦准备好布局文件,也需要注意图像分辨率的问题。

再次在 res/ 文件夹中添加图像,如下所示:

res/drawable-ldpi/sample_image.png         // low density
res/drawable-mdpi/sample_image.png         // medium density
res/drawable-hdpi/sample_image.png         // high density
res/drawable-xhdpi/sample_image.png        // extra high density

再次强调,所有图像的名称都相同。

设计图像的一般准则为:

ldpi is 0.75x dimensions of mdpi
hdpi is 1.5x dimensions of mdpi
xhdpi is 2x dimensinons of mdpi

通常,我会为320x480的屏幕设计mdpi图像,然后根据上述规则乘以尺寸以获取其他分辨率的图像。

Android将根据设备自动选择最佳的布局和图像组合。例如,对于高分辨率中等大小的设备,将向用户显示layout-medium和高密度图像。

请确保为所有这些组合创建模拟器并彻底测试您的应用程序。这里是更多信息的官方文档:

https://developer.android.com/guide/practices/screens_support.html


3

我在这里给您发送一份有关设备屏幕和密度的文档,它将帮助您了解哪些设备将从哪个文件夹中获取图像...!android screen sizes and densities


谢谢你把这个变得完全无法阅读。 - wexman

1

一个布局并不总是适用于所有不同的屏幕尺寸。由于Android至少有4种不同的屏幕尺寸(小、中、大、特大),您要么需要聪明地使用dp(密度像素),要么为每个屏幕分辨率使用不同的布局(我个人推荐这样做)。

您可以通过创建每种所需布局的文件夹来实现此目的,如下所示。 引用自http://developer.android.com/guide/practices/screens_support.html: 例如,以下是应用程序中提供不同布局设计和中等、高和超高密度屏幕的不同位图可绘制资源的列表。

res/layout/my_layout.xml // 正常屏幕大小的布局(“默认”)

res/layout-small/my_layout.xml // 小屏幕大小的布局

res/layout-large/my_layout.xml // 大屏幕大小的布局

res/layout-xlarge/my_layout.xml // 特大屏幕大小的布局

res/layout-xlarge-land/my_layout.xml // 特大横向屏幕大小的布局

您也可以直接使用

<supports-screens android:smallScreens="false" 

在您的清单中选择要在哪些屏幕尺寸上提供应用程序。但是,如果用户拥有不同尺寸的屏幕,则无法从商店下载该应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接