0

处理使用 match_parent 2.2 之前的其他问题的答案说明应该使用 fill_parent 以实现安全的向后兼容性。

我注意到的是,当您的 targetsdk 设置为 8 或更高且 minsdk 设置为 7 或更低时,使用 match_parent 或 fill_parent 是无关紧要的。我猜这是 b/c,xml 被编译成二进制 blob,因此一旦将应用程序打包到 apk 中,使用任何一个都无关紧要。

我觉得好奇的是为什么LayoutParams.MATCH_PARENT在 2.1 设备上使用 java 代码没有运行时错误。在尝试访问代码中的 LayoutParams.MATCH_PARENT 时,我希望看到 NoSuchClassMember 的某种 RuntimeException。

我猜这可能涉及如何在java中编译类文件。任何见解表示赞赏。

4

2 回答 2

1

可以使用任何一个。两者具有相同的价值。在代码上,它会警告你它已被弃用,但它们都是完全相同的东西。

不知道为什么谷歌会做出如此奇怪的改变。我喜欢以前的名字,因为这意味着它填充了 parent 的剩余空间,而不是匹配它,但这是我的意见。

于 2012-06-15T22:27:17.633 回答
0

据我所知,这两个是完全一样的。在文档中,它转换为相同的值(-1),我认为更改实际上只是适当的命名。

您还可以查看其他问题:match_parent 和 fill_parent 有什么区别?

请注意,在 2.2 之前的设备上运行使用 match_parent 的应用程序可以正常工作,但 SDK 会触发错误...

在您发表评论后...无论您在什么上运行它都无关紧要,而只有您使用什么 SDK 来编译...尝试使用 1.6 或 2.1 SDK 进行构建,它会给您这个错误:

Description Resource    Path    Location    Type
error: Error: String types not allowed (at 'layout_width' with value 'match_parent').   main.xml    /MyProject/res/layout   line 7  Android AAPT Problem

在 Eclipse 中,您可以通过进入项目的属性,进入“Android”页面并更改“项目构建目标”来更改您正在使用的 SDK。我可以向您保证,如果您尝试使用 2.2 之前不存在的“match_parent”,它将打印一个错误。

在此处输入图像描述

于 2012-06-15T21:28:29.527 回答