1

除了通用res/layout文件夹之外,我还有一个res/layout-v3 用于向后兼容 Android 1.5 的文件夹,该文件夹在某些RelativeLayout布局上存在问题。

它与迄今为止测试的所有手机和模拟器版本完美配合。除了 2.1(模拟器和 Nexus One)。他们选择显示 Android 1.5 布局 ( res/layout-v3) 而不是默认布局res/ layout

其他人可以确认吗?这是 Android 操作系统的错误吗?如果是这样,提交错误报告的最佳地点在哪里?


更新:

再次阅读https://developer.android.com/guide/practices/screens_support.html#qualifiers后(感谢 Mark 的提示),尤其是这部分

仅用于特定 API 级别或更高级别的资源。例如,如果您的应用程序设计为在 Android 1.5(API 级别 3)和 Android 1.6(API 级别 4 及更高版本)上运行,则可以使用 -v4 限定符来标记应用程序运行时应排除的任何资源在 Android 1.5(API 级别 3)上。

我改变了我的布局顺序

  • res/layout-v3(仅适用于 Android 1.5 -> 这是我做出的错误假设)
  • res/layout(其他)

我的新配置:

  • res/layout-v4(适用于 Android 1.6 及更高版本)
  • res/layout(对于其他任何东西 -> 在这种情况下,这将是 Android 1.5)

如果我正确理解了上述文档,并且我在括号中的假设这次是正确的,那么它现在应该可以工作了。但是,结果如下:

  • Android 1.5 正在使用 res/layout -> OK
  • Android 1.6 正在使用 res/layout-v4 -> OK
  • Android 2.0 正在使用 res/layout ->不行
  • Android 2.1 正在使用 res/layout-v4 -> OK

那么为什么 Android 2.0(在 Emulator 和 Motorola Milestone 上)没有选择正确的布局资源文件夹?

然后我用 2.0.1 再次对其进行了测试,它似乎在那里工作。所以这似乎是 2.0 中的一个错误,在 2.0.1 中得到了修复

但现在最奇怪的是:为了让它在 2.0 上运行,我将 res/layout-v4 文件夹复制到 res/layout-v5 以强制 Android 2.0 使用此布局资源。没用。但是后来我尝试将它复制到 res/layout-v6(应该是 Android 2.0.1)并且突然之间它可以与 2.0 一起使用。很奇怪!但我希望这种解决方法能帮助其他一些人。

4

1 回答 1

4

我已经测试了几种设备和模拟器(虽然不是很彻底),似乎所选资源文件夹是更高版本 <= 设备版本的文件夹。

于 2010-01-21T15:37:16.903 回答