3

注意:在解析 XML 资源时,Android 会忽略当前设备不支持的 XML 属性。因此,您可以安全地使用仅受新版本支持的 XML 属性,而不必担心旧版本在遇到该代码时会中断。例如,如果您设置 targetSdkVersion="11",则您的应用在 Android 3.0 及更高版本上默认包含 ActionBar。要将菜单项添加到操作栏,您需要在菜单资源 XML 中设置 android:showAsAction="ifRoom"。在跨版本的 XML 文件中执行此操作是安全的,因为旧版本的 Android 会简单地忽略 showAsAction 属性(也就是说,您不需要在 res/menu-v11/ 中使用单独的版本)。

来源:http: //developer.android.com/training/basics/supporting-devices/platforms.html

^ 尽管有这种说法,eclipse 拒绝从这里的同一站点编译未更改的片段基础版本。

给出的错误信息是:

不允许使用字符串类型(在“layout_width”处,值为“match_parent”)。

无论如何我可以在 XML 中抑制这个错误,比如某种无声标记,表明它们只适用于特定的 API 级别?理想情况下,我希望该项目在 Eclipse 中工作,并保持 1.6 的向后兼容性。

注意:所有其他错误都与未生成 R 相关,因此这是唯一的第一代错误。

清单文件确实包含该行

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
4

3 回答 3

1

您可以在较新的 API 中进行编译,并且应用程序仍将在旧 API 中运行,从而消除这些错误,只要您在未先提供相关检查的情况下不使用 .java 文件中的任何不受支持的功能即可。我以为我必须针对最低的 API 而不是最高的 API 进行编译,但是已经使用 1.6 AVD 进行了测试,以运行使用 4.0 编译的项目,并且它运行完美。

于 2012-06-29T21:08:52.727 回答
0

您是否尝试使用“fill_parent”而不是“match_parent”?如果您想为不同的 api 级别设置不同的属性值,您还可以通过将它们放在 values-4 (1.6 android) 和 values (其他所有) 文件夹中来创建一个带有这些属性的样式 xml 条目。

于 2012-06-28T20:24:45.320 回答
0

如果您要针对 API 8 或更低版本构建应用程序,则需要使用fill_parent. 也就是说,如今大多数开发人员都使用 API 8 作为支持的最低 sdk,因此您确实应该考虑针对较新的 API 构建您的应用程序。

于 2012-06-28T20:31:36.383 回答