【问题标题】:Android layouts for different screen sizes适用于不同屏幕尺寸的 Android 布局
【发布时间】:2017-12-11 06:35:37
【问题描述】:

我正在为 Android 应用的布局而苦苦挣扎。我已经为不同的屏幕尺寸定义了不同的布局,当前的布局目录结构是这样的:

  • 布局
  • 布局土地
  • 小布局
  • layout-xlarge
  • layout-xlarge-land

问题

主要布局目录文件显示为3.7 to 7.0,范围非常广泛。小屏幕上的文本重叠,如果我调整小;它在大屏幕上变得非常小。

据我说,布局小文件应该为较小的屏幕呈现,但这些文件只为安卓穿戴设备呈现。

layout-xlarge 似乎适用于 Nexus 9 to Nexus 10

我想知道,如何为3.7-5.05.0-7.0 屏幕尺寸定义不同的布局。

【问题讨论】:

  • 您应该使用Size Qualifiers 而不是配置限定符以获得更多控制权
  • 正如@maRShmallow 所指出的,您列出的尺寸限定符自Android API 级别13 起已被弃用。更可靠的分类系统是sw<N>dp 配置限定符,它定义了最小宽度(sw ) 在正在使用的屏幕的 dp 中。例如,我遇到了将 Nexus 6 归类为“平板电脑”的尺寸限定符,但知道设备低于 sw600dp(标准 7 英寸平板电脑的截止值),我能够解决这个问题。来源:developer.android.com/guide/practices/…
  • 谢谢,但sw<N>dp 限定符也有同样的问题。为3.76.0 显示320dp 布局文件。有什么解决办法吗?
  • 不需要做多个布局只要记住不要固定布局的大小。

标签: android android-layout layout


【解决方案1】:

user5594218已经给出了答案,但看起来你还不清楚。 (也许你是初学者)

所以,这里是分步指南

解决方案 1:(简短)

  1. 导航app > src > main > res

  2. 通过复制和粘贴复制布局目录

  3. 重命名重复的目录,例如layout-sw300dp

解决方案 2:(有点冗长)

  1. 新建资源目录:res > New > Android resource directory

  1. 选择Resource Typelayout

  2. 在目录名称中添加sw<N>dp,例如layout-sw300dp,然后点击OK

  1. 导航到app > src > main > res

  2. 在新目录中复制布局 XML 文件

    //repeat process for other qualifiers
    

支持所有屏幕的限定符列表:

  • layout-sw300dp
  • layout-sw330dp
  • 布局-sw480dp
  • layout-sw600dp
  • 布局-sw720dp

测试:

这就是它的样子,如果你做得对的话。

更多细节和示例,请查看:Android Application Development All-in-One For Dummies

【讨论】:

  • 你说得对,现在我完全明白了。非常感谢你的努力:)
【解决方案2】:

创建如下文件夹

layout-sw300dp
layout-sw330dp
layout-sw480dp 
layout-sw600dp 
layout-sw720dp 

还可以创建值文件夹,例如

values-sw300dp 
values-sw330dp 
values-sw480dp
values-sw600dp
values-sw720dp

【讨论】:

  • 为什么我需要创建不同的值目录?我创建了layout-sw320dp,问题也是一样的。它将 3.7 的 320dp 文件渲染到 6.0
  • Values 目录需要提及您的视图的所有大小,如 textview、imageview 等。并且您必须创建我在上面的答案中提到的所有布局文件夹。
  • 检查这个 320dp:典型的手机屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi 等)。 480dp:像 Streak (480x800 mdpi) 这样的补间平板电脑。 600dp:7 英寸平板电脑 (600x1024 mdpi)。 720dp:10 英寸平板电脑(720x1280 mdpi、800x1280 mdpi 等)。
  • 非常感谢,现在我在 Atlas_Gondal 指南的帮助下理解了您的回答。 :) 你能给我一个例子或不同的值文件夹吗?
  • 澄清一下,当我使用layout-sw300dp 结构时,我不需要使用layout-small 等。对吗?
【解决方案3】:

导航 app-> res-> 布局并右键单击然后新建-> 布局资源文件正确写入文件名并从可用的限定符中选择您想要的大小。

【讨论】:

    【解决方案4】:

    亲爱的,您不需要为各种屏幕声明布局。只需为每个屏幕制作单一布局,不要固定布局的宽度和高度。您必须保持高度匹配父级和包装内容以及宽度。

    【讨论】:

      【解决方案5】:

      您应该在 layout-height/layout-width/textsize 中尝试 dp,因为它与屏幕尺寸无关。

      【讨论】:

        猜你喜欢
        • 2016-03-30
        • 2014-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多