【问题标题】:different layouts for different screen size不同屏幕尺寸的不同布局
【发布时间】:2014-09-02 06:31:18
【问题描述】:

我已完成为我的项目开发(应用程序部分)应用程序,但现在布局出现问题。我创建了以下文件夹并编辑了 xml 文件: 布局(默认) 布局-大 布局正常 布局小 布局-xlarge

在我的智能手机 (Galaxy S Advance - 屏幕 800x480) 上,布局还可以,但同事的智能手机 (HTC MINI ONE - 屏幕 720x1280) 的应用程序布局不合适。在这两种情况下(我的智能手机和同事的智能手机),android 加载布局正常。

怎么了???

谢谢

【问题讨论】:

标签: android


【解决方案1】:

请注意布局的屏幕密度。即使您将布局文件放在适当的布局容器中,但这并不意味着 Android 会尊重文件夹,因为密度在 Android 如何选择正确的layout.xml 文件的方式中也起着重要作用。

任何小于 5 英寸的设备都将属于 sw320dp 类别,然后您的解决方案是创建名为 layout-sw320dp-ldpilayout-sw320dp-mdpilayout-sw320dp-hdpilayout-sw320dp-xhdpilayout-sw320dp-xxhdpi 的单独文件夹,并将相应的 xml文件。

同样,您可以使用以上屏幕密度来处理其他屏幕尺寸,例如 layout-sw600dplayout-sw720dp 等。

【讨论】:

  • 迄今为止最好的答案,谢谢你解决了我的问题,并节省了很多时间,因为已经浪费了一些时间......! :)
  • @arif,如果我们正在为 3.2 以上构建应用程序,那么没有使用默认 layout.xml 对吗??即 layout-ldpi ,layout-mdpi 等。
【解决方案2】:

您可以为不同的屏幕宽度创建不同的布局,而不仅仅是创建大小不一的dpi 文件夹,在这种方法中,您将只有一个drawable 文件夹包含您的所有资源和多个layout 文件夹,主要是一个名为 layout 并包含默认布局,以便在另一个布局文件夹中找不到它时运行指定的布局,android developers page 中描述的文件夹层次结构将如下所示:

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)

例如,如果您想要自定义布局到 340dp 屏幕宽度,您将在 res 文件夹中创建 layout-sw340dp 文件夹,所以它会像

res/layout-sw340dp/main_activity.xml

程序会根据设备宽度自动将布局分配到合适的文件夹中。

【讨论】:

    【解决方案3】:

    为你提供layout-large layout-normal layout-small layout-xlarge 4个布局类别。布局文件夹(没有任何限定符)将毫无用处。所有设备都将落入其他 4 个屏幕桶中。

    根据您的描述,我想您应该从资源中删除 layout-normal 文件夹。

    另外,normal、large 和其他两个只是“范围”。如果您想更准确地控制屏幕尺寸,可以使用layout-sw

    【讨论】:

    • 感谢您的回复。我删除了布局文件夹和布局正常文件夹,但我有同样的问题。
    • 尝试将您想要的 HTC MINI ONE 布局放置在文件夹 layout-sw720 中。这应该有效。一个好的指南是developer.android.com/guide/practices/screens_support.html
    • 感谢您的回复,但我在使用 Galaxy s3 时遇到同样的问题,我想找到一种解决方案,并且我不想创建很多文件夹(一个用于屏幕大小)。
    【解决方案4】:

    请删除您的应用程序的 loyout 文件夹,因为布局文件夹将无用

    Galaxy S Advance - 屏幕 800x480 布局-hdpi

    对于720 * 1280分辨率的设备,可以使用layout-w720-h1280文件夹

    【讨论】:

    • 感谢您的回复。我的应用程序将在所有 android 设备上运行,因此我必须找到一种解决方案。例如,现在我在 Galaxy S3(屏幕:360x640)上尝试我的应用,但我遇到了布局问题。
    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多