【问题标题】:How to create different layout for Galaxy S3 and Nexus 7?如何为 Galaxy S3 和 Nexus 7 创建不同的布局?
【发布时间】:2012-10-10 09:30:31
【问题描述】:

我创建了一个适用于 nexus 7 的 android 应用程序。 在资源文件夹中,我为 Nexus 7" 选项卡创建了两个文件夹,layoutlayout-land。到目前为止一切正常。现在我想为三星 Galaxy S3 创建一个不同的布局。为此,我创建了一个带有layout-largelayout-large-land 的资源中的文件夹。但是,这就是问题所在。现在,对于 Nexus 7,layout-large 文件夹中定义的布局也正在加载。如何停止这种情况?如何为Nexus 7" 标签和 Galaxy S3 手机?我已阅读 Supporting Multiple Screens 文档。但我无法理解,因为 Nexus 7 的屏幕尺寸是 1204 X 800 而三星 Galaxy S3 的屏幕尺寸是 720 X 1280。

如何为具有不同屏幕分辨率和显示尺寸的不同设备创建不同的布局?此外,根据设备大小,我想在我的应用程序中更改一些值。那要怎么做呢?

【问题讨论】:

标签: android android-layout android-screen


【解决方案1】:

根据Supporting Multiple Screens

smallnormallargexlarge 等限定符用于 Screen Sizes,这意味着 Nexus 7 将使用带有 large 限定符的资源(如果您提供)。因此,在您使用large 限定符创建文件夹之前,Nexus 7 将从默认布局文件夹加载资源。至于ldpimdpihdpixhdpi是屏幕密度。

要解决您的问题,您需要:

  1. 将 Galaxy S3 的布局定义放入 layout,将 Nexus 7 的 layout-sw600dp 放入。请参考 Android 开发者博客:Getting Your App Ready for Jelly Bean and Nexus 7

  2. 将 Galaxy S3 的资源(图像或可绘制的东西)放入 drawable-xhdpi 和 Nexus 7 的 drawable-tvdpi 或 drawable-hdpi。

希望对您有所帮助,如果您有任何其他问题,请告诉我:)

这里有一些有用的参考资料:

What layout is suitable for 720x1280 Android devices?

Screen Width Qualifier

【讨论】:

  • 即使将我的 s3 布局定义放入 layoutlayout-large 仍在加载
  • 那么请尝试将s3的定义放入layout,并根据Android Developers Blog将Nexus的定义放入layout-sw600dp。同时,我还更新了我的答案以包含此评论。
  • 没有。没关系。当我实施您之前的评论时,它现在工作正常。这就是我删除该评论的原因。我的错误是,s3 的模拟器配置不正确。这就是为什么。无论如何,谢谢你的努力。 +25
  • 很高兴 2 听说你已经解决了这个问题。我添加了更多对我的回答的参考以帮助他人。
  • layout-sw360dp 是一个不错的选择,如果您想要一个不同于更小、更正常尺寸手机的默认布局的 Galaxy S3 特定布局。 layout-sw600dp 绝对是您想要的 Nexus 7。
【解决方案2】:

您还需要一个用于 xlarge 和 xlarge-land

或者您可以通过调用以编程方式完成:

Display displayparm= activity.getWindowManager().getDefaultDisplay();
int width= displayparm.getWidth();
int Height= displayparm.getHeight();

并从此信息中选择布局

【讨论】:

  • @Andres.. 我不能把你带到这里。我应该使用哪个xlarge。我已经创建了这样的布局。即便如此,layout-large 也在为 S3 和 Nexus 7 加载
【解决方案3】:

您可以通过在 res 文件夹下添加新文件夹作为 layout-xlargelayout-xlarge-large 来创建布局,并且您有更新 android manifest 文件以支持更高分辨率

【讨论】:

    【解决方案4】:

    我开发了一个应用程序,我在其中支持具有不同分辨率和密度的多种设备。 nexus 7和galaxy s3也是其中之一。如果您的项目中有 layout-large 文件夹,galaxy s3 和 nexus7 显然会从大屏幕文件夹中获取。但是galaxy s3属于大型hdpi类别,而nexus7属于大型tvdpi类别。因此,如果您分别为 s3 和 nexus7 设置了 layout-large-hdpi 和 layout-large-tvdpi,它将非常有用。

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多