match_parent 和 fill_parent 有什么区别?

我对两个 XML 属性感到有些困惑: match_parentfill_parent 。似乎两者是相同的。它们之间有什么区别吗?

答案

它们是同一件事(在 API Level 8 + 中)。使用match_parent

FILL_PARENT(在 API 级别 8 和更高版本中重命名为 MATCH_PARENT),这意味着该视图希望与其父视图一样大(减去填充)

...

fill_parent :视图应与其父视图一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并由match_parent代替。

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

Google 更改了名称以避免混淆。

旧名称fill parent在于,它暗示了它影响父级的尺寸,而match parent更好地描述了所产生的行为 - 将尺寸与父级匹配。

两个常量最后都解析为-1 ,因此导致应用程序中的行为相同。具有讽刺意味的是,为了澄清事物而进行的此名称更改似乎增加了混乱,而不是消除了混乱。

从功能上来说没有什么区别,Google 刚刚将名称从 API 级别 8(Android 2.2)从 fill_parent 更改为 match_parent。由于兼容性原因,FILL_PARENT 仍然可用。

LayoutParams.FILL_PARENTLayoutParams.MATCH_PARENT值均为 - 1。不知道是什么吸引了谷歌从填充父母更改为匹配父母:)

由于大多数phones are >= Android 2.2 .. 您应该使用 Match Parent 以获得将来的兼容性... 不确定何时将停用旧的 Fill Parent 常数!

为了兼容起见,最好坚持使用 fill_parent,即在支持以下 API 8 设备时。但是,如果您的应用程序面向 API 8 及更高版本,则应改用 match_parent。

FILL_PARENT在 API 级别 8 中已过时, MATCH_PARENT使用更高级别的 API

使用 match_parent代替fill_parent并将其设置为与父级一样远。只需使用match_parent,不必担心fill_parent 。我完全放弃了fill_parent ,一切都像往常一样完美。

在这里查看更多。

只是给它一个更接近实际动作的名称"fill_parent"不会填充名称所暗示的剩余空间(为此您使用 weight 属性)。取而代之的是,它占用其布局父级的空间。这就是为什么新名称是"match_parent"

两者具有相似的功能,唯一的区别是,fill_parent 在 API 级别 8 之前使用,而 match_parent 在 API 级别 8 或更高级别使用。

当在XML属性中将布局widthheight设置为match_parent时,它将占据父视图具有的完整区域,即,它将与父视图一样大。

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

野兔父母是红色的,孩子是绿色的。儿童占据所有区域。因为它的widthheightmatch_parent

在此处输入图片说明

注:如果将 parent 应用于填充,则不会包含该空间。

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0"
    android:paddingTop="20dp"
    android:paddingBottom="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

在此处输入图片说明

所以 TextView hight = 300dp(父级 hight)-(20(paddingTop)+10(paddingBottom))=(300-30)dp = 270 dp

fill_parent 与 match_parent

fill_parentmatch_parent fill_parent名称

对于 API 级别 8 和更高版本,将fill_parent重命名为match_parentfill_parent不建议使用fill_parent

因此fill_parentmatch_parent相同。

fill_parent 的 API 文档

该视图应与其父视图一样大(减去填充)。从 API 级别 8 开始不推荐使用此常数,并由 {@code match_parent} 代替。

match_parentfill_parent是相同的属性,用于在水平或垂直全屏中定义视图的宽度或高度。

这些属性在 android xml 文件中使用,像这样。

android:layout_width="match_parent"
 android:layout_height="fill_parent"

要么

android:layout_width="fill_parent"
 android:layout_height="match_parent"

在以前的版本中使用了fill_parent ,但现在已弃用并由match_parent代替。希望对您有帮助。