弃用的单词是否是fill_parent和match_parent之间唯一的区别?

74

我发现fill_parentmatch_parent的意思是相同的。

  • fill_parent表示视图希望尽可能地与其父视图一样大,如果有,则减去父视图的填充。
  • match_parent表示视图希望尽可能地与其父视图一样大,如果有,则减去父视图的填充。

我发现唯一的区别是从API Level 8开始fill_parent已被弃用,而被match_parent替代

然而,我没有注意到这两者之间的任何区别。如果两者是相同的,那么为什么fill_parent被弃用了呢?除了一个被弃用而另一个没有之外,是否有人能解释这两者之间的任何差异?

我查阅了http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html


在API中有两个执行相同操作的方法是废弃一个方法的原因之一。 - fyr
更多内容请参见https://dev59.com/qG025IYBdhLWcg3w25uy - vnshetty
4个回答

96

正如您所说,它们是完全相同的。正如Romain Guy所说,他们更改了名称,因为"fill_parent"对开发人员来说很困惑。事实上,"fill_parent"并不填充剩余的空间(您需要使用权重属性来实现这一点),而是占用其布局父项的所有空间。这就是为什么新名称是"match_parent"


9
根据Romain Guy在这个视频中的说法,这些单词表示相同的行为。但是许多开发人员误解了fill_parent的含义,因此他们提出了一个别名。

7

我已经在Android开发了很长时间,也意识到除非你想在旧的API上运行,否则似乎没有区别。我会使用fill_parent,因为我所有的应用程序都是最低API 7。此外,顺便说一句,由于Android是向前兼容的,这是正确的选择。


4

除了现有的答案外,这里是LayoutParams类的源代码的一部分,FILL_PARENT和MATCH_PARENT常量都映射到相同的值。因此,我们拥有完全相同的功能。

    public static class LayoutParams {
    /**
     * Special value for the height or width requested by a View.
     * FILL_PARENT means that the view wants to be as big as its parent,
     * minus the parent's padding, if any. This value is deprecated
     * starting in API Level 8 and replaced by {@link #MATCH_PARENT}.
     */
    @SuppressWarnings({"UnusedDeclaration"})
    @Deprecated
    public static final int FILL_PARENT = -1;

    /**
     * Special value for the height or width requested by a View.
     * MATCH_PARENT means that the view wants to be as big as its parent,
     * minus the parent's padding, if any. Introduced in API Level 8.
     */
    public static final int MATCH_PARENT = -1;
    ...

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