Android上针对不同屏幕尺寸使用不同布局?

8

我曾经使用Eclipse的图形编辑器创建了一个应用程序,采用了AbsoluteLayout、固定像素值等不良实践。它默认适配了3.7英寸屏幕。有没有办法为每个屏幕大小设计单独的布局,并让程序根据屏幕大小选择加载哪个布局呢?

3个回答

11
提供不同的布局以适应不同的屏幕尺寸 默认情况下,Android 会调整应用程序布局以适应当前设备屏幕。在大多数情况下,这很好用。但在其他情况下,您的 UI 可能看起来不够好,需要针对不同的屏幕尺寸进行调整。例如,在较大的屏幕上,您可能希望调整一些元素的位置和大小以利用额外的屏幕空间,或者在较小的屏幕上,您可能需要调整大小以使所有内容都能适合屏幕。
您可以使用的配置限定符提供特定于大小的资源为 small、normal、large 和 xlarge。例如,超大屏幕的布局应该放在 layout-xlarge/ 中。

从 Android 3.2 (API 级别 13) 开始,上述大小组已被弃用,您应该改为使用 sw<N>dp 配置限定符来定义布局资源所需的最小可用宽度。例如,如果您的多窗格平板电脑布局需要至少 600dp 的屏幕宽度,则应将其放置在 layout-sw600dp/ 中。有关声明 Android 3.2 平板电脑布局的新技术的使用进一步讨论,请参阅有关声明平板电脑布局的部分。
来自 Android developer site - 只需使用 layout-small/、layout-xlarge/ 等文件夹即可 :) 最好的方式。

仅返回翻译文本:是上面最后一段的一部分 :) - cV2
你说只需使用layout-small、-xlarge等,但你引用的文档说那已经被弃用了。看起来这些屏幕尺寸类别应该只用于支持旧设备。开发者应该优先考虑使用sw<width>dp限定符。 - spaaarky21

8
我通过在启动时运行以下代码来解决了这个问题。
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();

我会先使用if语句检查分辨率,然后加载特定分辨率的布局。例如,WVGA屏幕是800x480,所以我会检查并加载该布局。

if (width == 480 && height == 800)
    {
        setContentView(R.layout.main);
    }

这是针对API < 13的,现在这些函数已经被弃用,请参见以像素为单位获取屏幕尺寸


5
安卓已经为你完成了这一切,为什么还要自己动手呢?只需将你的独立布局放入相应的资源文件夹中——例如layout、layout_ldpi、layout_mdpi、layout_hdpi即可。 - RivieraKid
1
因为安卓将其分成小型、普通、大型和超大型,这对我所需的并不具体。 - Cistoran

1

不要在“res”文件夹中创建不同的文件夹,只需创建“layout-small”用于小屏幕,“layout-large”用于大屏幕,“layout-xlarge”用于超大屏幕。根据需要设计布局。点击这里获取更多信息。


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