Android中fill_parent与match_parent的区别

8

为什么要引入match_parent并弃用fill_parent,因为两者的含义相同。这个变化会不会影响向后兼容性?


我也一直对此感到困惑。实际上,我认为fill_parentmatch_parent更能表达其含义。 - inazaruk
2个回答

10
使用match_parent代替fill_parent不会使得所生成的APK无法在较旧版本上运行,因为在生成的APK中,match_parent和fill_parent会被替换为它们对应的常量值。在这种情况下,两者的常量值都是-1。因此,同一份APK也可以在较旧版本的Android平台上运行。
但是,如果您在编译代码时切换到较旧的版本(7或以下版本),则会出现编译错误(因为在较旧版本中没有定义match_parent)。

4

Android文档说明:

FILL_PARENT(在API Level 8及更高版本中重命名为MATCH_PARENT),意味着视图希望与其父容器一样大(减去填充)

fill_parent:视图应该与其父容器一样大(减去填充)。 从API Level 8开始,此常量已被弃用,并被match_parent替换。

因此,它们的值相同,都为-1。但如果您担心向后兼容性,可以访问此处: 平台版本

这将为您提供更好的理解,何时应将所有fill_parent更改为match_parent。 目前,似乎有50%的人使用API Level 8或更高版本。所以这取决于您是否要更改它。


谢谢回复,但我的问题是为什么要进行这个更改,而不是如何适应它。 - 1O1
非常抱歉,我能够想到的唯一原因是FILL_PARENT可能意味着将子视图填充到其父视图中,大小和位置(x,y)相同。但是FILL_PARENT的实际含义是尺寸(宽度或高度)与父级相同,而不是位置(x,y),因此他们决定将其更改为MATCH_PARENT以便澄清此问题。但我并不是更改此名称的人,只是对此进行合理猜测。 :) - Terence Lui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接