关于android:match_parent和fill_parent有什么区别?

What is the difference between match_parent and fill_parent?

我对两个XML属性有点困惑:match_parentfill_parent。似乎两者都是一样的。他们之间有什么区别吗?


它们是相同的(在API级别8+中)。使用match_parent

FILL_PARENT (renamed MATCH_PARENT in API Level 8 and higher), which means that the view wants to be as big as its parent (minus padding)

...

fill_parent: The view should be as big as its parent (minus padding). This constant is deprecated starting from API Level 8 and is replaced by match_parent.

http://developer.android.com/reference/android/view/viewgroup.layoutparams.html


为了避免混淆,谷歌改名了。

旧名称fill parent的问题在于它暗示了它影响父维度,而match parent更好地描述了产生的行为——将维度与父维度匹配。

两个常量最终都会解析为-1,因此在应用程序中会产生相同的行为。具有讽刺意味的是,为了澄清问题而进行的这一更名似乎增加了混乱,而不是消除了混乱。


功能上没有区别,Google只是将名称从fill_parent改为match_parent,从api级别8(android 2.2)改为match_parent。由于兼容性原因,填充父级仍然可用。

LayoutParams.FILL_PARENTLayoutParams.MATCH_PARENT都有值-1。不确定是什么诱惑谷歌从填充父项改为匹配父项:)

因为大部分的江户一〔3〕。为了将来的兼容性,您应该使用match parent…不确定何时停止旧的填充父常量!


为了兼容性起见,最好坚持填充父级,即在支持低于API 8的设备时。但是,如果你的应用程序目标是API 8及更高版本,你应该使用Match_Parent。


Match_Parent用于代替Fill_Parent,并将其设置为一直到父级。只需使用match_parent,然后忘记fill_parent。我完全抛弃了填充家长,一切都像往常一样完美。

在这里查看更多信息。


在API 8级和match_parent使用高级API时,不推荐使用FILL_PARENT


只是给它一个更接近它实际行动的名字。"fill_parent"没有像名称所暗示的那样填充剩余的空间(因为您使用了weight属性)。相反,它占用的空间与其布局父级相同。这就是为什么新名字是"match_parent"


两者都有相似的功能,唯一的区别是填充父级用于API级别8,匹配父级用于API级别8或更高级别之后。


当您在XML属性中将layout widthheight设置为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>

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

enter image description here

注意:如果应用了父级填充,则不会包括该空间。

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

enter image description here

所以textview hight=300dp(父级hight)-(20(paddingtop)+10(paddingbottom))=(300~30)DP= 270 DP

填充父级与匹配父级

fill_parentmatch_parent的原名。

对于API 8级及更高级别的fill_parent,更名为match_parentfill_parent现在已被弃用。

所以fill_parentmatch_parent是一样的。

填充父级的API文档

视图应该和其父视图一样大(减去填充)。此常量从API级别8开始被弃用,并替换为@code match_parent。


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

这些属性用于类似这样的Android XML文件中。

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

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

FILL_PARENT曾在以前的版本中使用过,但现在它已被弃用,并被match_parent所取代。希望对你有帮助。


填充父视图:视图应该和父视图一样大。

现在,此内容填充父级已被弃用,并替换为匹配父级。


对我来说,填充父级和匹配父级只执行相同的功能:

填充父代:在API 8之前使用过

配对亲本这是从API 8中使用的+两者的功能填充填充旁边的父视图


匹配父级,这意味着视图希望与其父级一样大(减去填充)。

包装内容,这意味着视图要足够大以容纳其内容(加上填充)

为了更好的说明,我创建了一个示例布局来演示这个概念。为了观察它的效果,我添加了每个textview内容的边框。

在"匹配父级"文本视图内容中,我们可以看到它的布局宽度超出了父级的整个长度。

但是我们可以在"包装内容"文本视图内容中看到,它的布局宽度是包装内容(包装内容)的长度。

Android Layout


fill_parent不推荐使用API 8级及更高版本,其更高版本更名为match_parent

两者都是相同的fill_parentmatch_parent,在低于API 8级的较低版本中使用fill_parent,在高于API 8级的版本中使用match_专利。

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

fill_parent:视图应该和其父视图一样大(减去填充)。该常量从API级别8开始被弃用,并由match_parent替换。

有关详细信息,请访问此页


fill_parent在API级别8及更高版本中被重命名为match_parent,这意味着视图希望与其父视图一样大(减去填充)-Google


1。配对母体

当您将布局宽度和高度设置为"匹配父视图"时,它将占用父视图的整个区域,即它将与父视图一样大。

注意:如果应用了父级填充,则不会包括该空间。

默认情况下,当我们创建layout.xml时,我们将相对布局作为默认父视图,其中android:layout_width="match_parent"和android:layout_height="match_parent",即它占据移动屏幕的完整宽度和高度。

还要注意,填充应用于所有侧面,

1
2
3
4
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,并设置其布局_width="match_parent"和布局_height="match_parent",图形视图将显示类似的内容,

匹配父级示例

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
xmlns:tools="http://schemas.android.com/tools"
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"
tools:context="com.code2care.android.togglebuttonexample.MainActivity">

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">

2。填充母体:

这与Match_Parent相同,Fill_Parent在API级别8中被折旧。因此,如果您使用的是API级别8或更高级别,则必须避免使用fill_父级

让我们按照与匹配父级相同的步骤操作,只需在任何地方使用填充父级。

你会发现填充父对象和匹配父对象在行为上没有区别。