如何为 10 英寸和 9.7 英寸的平板电脑创建两个独立的布局?

How to create two separate layouts for 10'' and 9.7'' tablets?

我正在为 Android 平板电脑开发应用程序。 Google's guide 我读了好几遍,但有些地方似乎不对:

我一直在 Genymotion 的 Google Nexus 10 (10.1'') 上测试该应用程序。昨天我买了一个 9.7'' 平板电脑在真实设备上进行测试,但是 界面就像我将 Android Studio 布局预览设置为 Nexus 9 (8.9'') .

所以我猜到了:

所以我将所有布局移至 /layout-xlarge-land/ 并开始设计一款新的以适合我的 9.7 英寸平板电脑,并放入 /layout-large-land/,基于 8.9 英寸 Nexus 9(看起来与我的 9.7 英寸完全一样)

但令我惊讶的是,Android Studio(或者实际上只是 Android)将 8.9''(=9.7'')和 10'' 都视为 large

我已经尝试了几个答案,说要将文件夹重命名为 /layout-sw768dp/,但它们不起作用。

所以我需要两个文件夹:一个用于 10 英寸的平板电脑,另一个用于 9.7 英寸的平板电脑(是的,它们的处理方式不同)。

我应该如何命名它们?

I need two folders: one for 10'' tablets and another for 9.7''

这些不是有意义的数字,因此无法为它们提供不同的资源。它们没有意义,因为它们没有考虑纵横比。并非所有 Android 设备都具有相同的宽高比:有些是 16:9,有些是 16:10,有些是 4:3,有些是 1:1,有些是其他东西完全。 10"、9.7" 和 kin 主要用于营销目的。

这与 Web 设计没有什么不同,在 Web 设计中,设计人员不会过多地谈论浏览器的对角线尺寸window。

出于技术目的,虽然您可以使用遗留的 -large/-xlarge 类型的限定符,但它们大约在四年前被 -w/-h 所取代/-sw 限定词:

  • -w640dp 表示只能在当前宽度为 640dp(即 4 英寸)或更大的设备上使用的资源,您可以在其中提供所需的数字我有 640

  • -h640dp 表示只能在当前高度为 640dp 或更大的设备上使用的资源(同样,具有可自定义的值)

  • -sw640dp 表示只能在最小宽度在任何方向上为 640dp 或更大的设备上使用的资源(在横向中,"smallest width"其实就是现在的身高)

这让您可以像 Web 设计人员如何使用 CSS 样式表中的媒体查询来根据特定的高度和宽度更改 CSS 规则一样进行控制。

现在,既然没有人知道你认为什么是 9.7" UI 什么是 10" UI,没有人能真正帮助你将其整合到一套布局规则中或为您提供有效的限定符值。您将需要根据当前宽度、当前高度或最小宽度自行确定分界线的位置。让我们假设您选择 800dp 当前宽度作为您的分界线。您小于 800dp 的布局将放在 res/layout/res/layout-land/ 等目录中。您的 800dp 或更大的布局将进入 res/layout-w800dp/.

I have tried several answers saying to rename the folder to /layout-sw768dp/, but they don't work.

您不妨考虑编辑您的问题并解释 "they don't work" 的含义。