为不同设备选择正确的布局命名方案

问题描述:

通过阅读文档here后,我仍然有点困惑,我该如何使用命名方案来正确设置不同设备的布局。为不同设备选择正确的布局命名方案

我特别需要Galaxy S3,Nexus 7和Asus Transformer的布局。

我当前使用:

S3: 
    layout-normal 
    layout-normal-land 

Nexus 7: 
    layout-large 
    layout-large-land 

Transformer: 
    layout-xlarge 
    layout-xlarge-land 

这是正确的,或者是有没有办法更具体的目标设备?

+1

不要忘记'dimens.xml' - 我发现它显着减少了布局文件的数量,特别是在普通和大型之间。此外,没有'-normal',而是'layout'和'layout-land'。 – 323go 2013-03-11 22:06:14

您的示例使用了小型/中型/大型/大型旧桶的旧方法。这是有问题的,因为例如Galaxy Tab 7.0(1024x600)和Nexus 7(1280x800)都是合格的。 Nexus 7可以处理平板电脑布局,但旧版本的Tab 7.0通常更适合使用电话布局。旧系统不支持这种区别,因此,从Honeycomb开始,您可以使用新方法,该方法不依赖于桶,但使用dp中的实际屏幕大小来决定使用哪种布局。这使您可以更好地控制何时选择哪个布局。

查看您链接的文档中的Declaring Tablet Layouts部分。它介绍了基于dp的选择器。您提到的三种设备都使用可从“sw720dp”方法中受益的较新Android版本。因为如果你的最低目标版本是Gingerbread或更早版本,你基本上必须同时支持s/m/l/xl存储桶和更新的基于dp的选择器。乍一看,这意味着您必须将所有平板电脑布局复制到多个目录并手动保持同步。幸运的是,有一个技巧可以在不复制/粘贴布局定义的情况下进行工作。它涉及在values/部分中使用布局别名。如何做到这一点在Android教程的multiscreen部分有记录。