2011-12-21 66 views
0

从Android 3.2开始我有这个奇怪的问题。确切屏幕尺寸的Android资源文件夹

这很容易重现:

  1. 创建一个空的项目;
  2. 将values-480x320 /资源目录添加到它;
  3. 在此新文件夹中更改一些字符串,例如@ string/hello,与values /目录中的缺省值不同。

现在,在3.1和更低版本的Android设备和仿真器上,一切都如您所期望的那样。但在3.2及更高版本(包括4.x Galaxy Nexus和仿真器)上,使用值-480x320 /而不是值/文件夹!

值得一提的是,我没有看到兼容性“Stretch/Zoom to fill screen”图标。我尝试在AndroidManifest.xml中更改supports-screens和uses-sdk标记,但它们不能解决这个问题。

所以我的问题是:为什么会发生这种情况,你有什么建议来解决它?

PS,我真的没有看到任何理由为什么从3.1到3.2的Android版本这样一个小的变化必须打破旧应用程序!

在此先感谢!

+0

看看这里,也许它会有所帮助:http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts – Jave 2011-12-21 09:21:51

+0

没有人在Android中使用“* -480x320 /”资源? ? – myself 2011-12-21 15:10:11

回答

0

如果您有兴趣:建议基本上不要使用基于固定分辨率的资源文件夹,如值-480x320。

0

我猜想3.2中有一些改变了this算法。尝试创建具有限定符here的不同值文件夹。

+0

感谢您的支持! 如果我删除旧样式(例如values-480x320)文件夹并将其替换为新样式(例如values-sw320dp)文件夹,则问题将在新的3.2+平台上修复。但与此同时,布局将打破3.1和更低的Android,因为他们根本不理解新的3.2样式后缀...... – myself 2011-12-21 09:45:37

+0

如果你在res中有两个文件夹 - 新旧后缀会发生什么? – Jin35 2011-12-21 10:47:31

+0

通常,新式文件夹完全被忽略,如果有新文件夹,则替换为480x320文件夹。但我尝试了各种新旧风格的组合,并发现了一些有用的东西 - 对于WVGA800/240dpi仿真器,您可以声明值-sw300dp,并且此文件夹将使得来自值-480x320的资源将被“忽略” - 如果您不愿意在values-sw300dp中不指定@ string/hello,将使用来自默认值/目录的@ string/hello。这个修复非常混乱,所以我正在寻找更好的东西。 – myself 2011-12-21 12:45:16