match_parent和fill_parent的区别

match_parent和fill_parent的区别

技术背景

在Android开发中,fill_parentmatch_parent是用于定义视图宽度和高度的属性。fill_parent在早期版本中使用,后来在API Level 8及更高版本中被重命名为match_parent

实现步骤

使用match_parent

在Android的XML布局文件中,设置视图的宽度或高度为match_parent,视图将占据其父视图的可用空间(减去父视图的内边距)。

1
2
3
4
5
6
7
8
9
10
11
<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>

使用fill_parent

在API Level 8之前,可以使用fill_parent实现相同的效果。但在API Level 8及更高版本中,fill_parent已被弃用。

1
2
3
4
5
6
7
8
9
10
11
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#f9b0b0">

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

</LinearLayout>

核心代码

match_parent示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical"/>
</LinearLayout>

fill_parent示例(API Level 8之前)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical"/>
</LinearLayout>

最佳实践

由于fill_parent在API Level 8及更高版本中已被弃用,为了保证代码的兼容性和可读性,建议在开发中始终使用match_parent

常见问题

为什么要将fill_parent重命名为match_parent?

fill_parent这个名称容易让人误解为视图会填充父视图的剩余空间,而实际上它只是与父视图的尺寸相匹配。match_parent这个名称更能准确描述其行为。

使用fill_parent会有什么问题吗?

在API Level 8及更高版本中,使用fill_parent虽然仍然可以工作,但会收到编译器的警告。为了避免潜在的兼容性问题,建议使用match_parent


match_parent和fill_parent的区别
https://119291.xyz/posts/difference-between-match-parent-and-fill-parent/
作者
ww
发布于
2025年6月25日
许可协议