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



我正在开发Android平板电脑的应用程序。我已经把这个谷歌指南读了好几遍,但是有些地方似乎不太对:

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

所以我猜是这样的:

  • 大于10 "视为xlarge
  • 小于10英寸被视为large

所以我把我所有的布局移动到/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 " (是的,它们不是平等对待的)。

我应该如何命名它们?

我需要两个文件夹:一个放10 "平板电脑,另一个放9.7 "平板电脑

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

这与网页设计没有什么不同,在网页设计中,设计师不会过多地使用浏览器窗口的对角线尺寸。

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

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

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

  • -sw640dp表示资源应该只在最小宽度为640dp或更大的设备上使用,在任何方向上(在横向,"最小宽度"实际上是当前高度)

这给了你控制权,就像Web设计师在CSS样式表中使用媒体查询来根据特定的高度和宽度改变CSS规则一样。

现在,因为没有人知道你认为9.7英寸的UI是什么,你认为10英寸的UI是什么,没有人能真正帮助你将它们整合到一组布局规则中,或者为你提供有效的限定符值。您需要根据当前宽度、当前高度或最小宽度自行确定分界线的位置。让我们暂时假设您选择800dp电流宽度作为分界线。小于800dp的布局应该放在res/layout/res/layout-land/这样的目录中。你的800dp或更大的布局将在res/layout-w800dp/

我已经尝试了几个答案,说要重命名文件夹到/layout-sw768dp/,但他们不工作。

你不妨考虑修改一下你的问题,并解释一下"they don't work"是什么意思。

最新更新