Android:如何让手机资源覆盖平板电脑的资源

时间:2014-09-11 11:53:17

标签: android tablet android-resources

目前在Android开发中,开始专门为Android平板电脑开发新版本是很常见的。 (通常它不是平板电脑的额外布局,而是全新的应用程序,因为管理片段的逻辑与手机版本开始使用的逻辑完全不同。)

在外部团队中,我们在res/values文件夹中包含Android资源值,特别是dimens.xml中的维度定义

当这个平板电脑版本必须在手机上工作时,问题就出现了。

Android假设将替代资源放入,例如values-smallvalues-normalvalues-largevalues-xlarge

请参阅Providing Resources article,例如本地sdk/docs/guide/topics/resources/providing-resources.html

首先,在文档中没有明确说明,但我认为其内部是values实际values-normal,即默认屏幕大小的默认值(默认密度)(即手机) 这个建议是对的吗?

然后,不将所有values移动到values-xlarge(因为它们实际上是在设计时考虑到平板电脑),如何重新定义(或“覆盖”){{1}内特定维度的值}?

我无法移动,因为有很多文件,有些正在开发中。

screen-ranges

来自Supporting Multiple Screens的图片,例如dimens.xml

相关的SO问题:

UPDATE-1 sdk/docs/guide/practices/screens_support.htmlvalues不同,因为xlarge配置会读取放入values-normal的值(当没有其他配置时)

2 个答案:

答案 0 :(得分:1)

  

我无法移动,因为有很多文件,有些正在开发中。

正如你已经自己回答的那样,为了解决这个问题,你需要移动文件,所以你只需要咬紧牙关然后继续使用它。然后,“正在开发”的文件在准备就绪时需要放在适当的位置。

假设您正在使用像Git这样的代码管理系统,移动文件并不是什么大问题 - 例如,它们仍保留所有版本历史记录。

答案 1 :(得分:1)

  

首先在文档中没有明确说明,但我认为里面的值实际上是值 - 正常,默认屏幕大小的默认值是默认密度(即手机)这个建议是对吗?

没有。 res/values/根本不符合屏幕尺寸。

  

然后没有将所有值移入value-xlarge(因为它们实际上是在设计时考虑到了Tablet),如何重新定义(或“覆盖”)dimens.xml中特定维度的值?

拥有res/values/中的每个值中的一个。默认情况下,这将用于所有屏幕尺寸。

然后,在其他资源集中,例如res/values-large/,为所选资源提供替代定义,其中在指定的屏幕尺寸或更大时需要这些替代品。

并且,您可能希望考虑切换到原始屏幕尺寸存储桶的-swNNNdp和亲属,以获得更大的灵活性。