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

时间:2011-12-15 07:57:12

标签: android

我发现fill_parentmatch_parent都意味着同样的事情

  • fill_parent 表示视图希望与其父视图一样大,减去父视图的填充(如果有)。
  • match_parent 表示该视图希望与其父视图一样大,减去父视图的填充(如果有)。

我发现的唯一区别是从API级别8开始不推荐使用fill_parent,而是由match_parent替换

但是,我没有注意到这两者之间有任何区别。如果两者相同,那么为什么fill_parent被弃用。任何人都可以解释这两者之间的任何差异,除了一个被弃用而另一个不被批准的事实?

我已经完成了http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

4 个答案:

答案 0 :(得分:88)

正如你所说,他们完全一样。正如Romain Guy所说,他们更改了名称,因为"fill_parent"让开发人员感到困惑。事实上,"fill_parent"没有填充剩余的空间(因为你使用了weight属性),但它占用了与布局父级相同的空间。这就是新名称为"match_parent"的原因。

答案 1 :(得分:9)

this视频中的Romain Guy说,这些词语标记的行为相同。但许多开发人员误解了fill_parent的含义,因此他们提出了一个别名。

答案 2 :(得分:7)

我在Android中开发的时间足够长,也意识到除了你想在旧的API上运行之外似乎没什么区别。我会使用fill_parent,因为我使用最少的API 7创建了所有应用程序。另外,在旁注中,由于Android是向前兼容的,因此这是可行的方法。

答案 3 :(得分:3)

除现有答案外。以下是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;
    ...