match_parent和fill_parent有什么区别?

时间:2011-04-23 03:31:10

标签: android android-layout

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

17 个答案:

答案 0 :(得分:1204)

它们是相同的(在API级别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

答案 1 :(得分:241)

谷歌更改了名称以避免混淆。

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

两个常量最终解析为-1,因此导致应用程序中的相同行为。具有讽刺意味的是,这个改变名称的名称似乎增加了混乱而不是消除它。

答案 2 :(得分:26)

功能上没有区别,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常量!

答案 3 :(得分:12)

为了兼容性,最好坚持fill_parent,即支持API 8设备以下。 但是,如果您的应用针对API 8及更高版本,则应使用match_parent。

答案 4 :(得分:8)

在API级别8中不推荐使用

FILL_PARENTMATCH_PARENT使用更高级别的API

答案 5 :(得分:8)

match_parent 用于代替 fill_parent ,并将其设置为父进程。只需使用 match_parent ,忘记 fill_parent 。我完全抛弃了 fill_parent ,一切都像往常一样完美。

查看here了解更多信息。

答案 6 :(得分:6)

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

答案 7 :(得分:6)

只是给它一个更贴近实际行动的名称"fill_parent"未填充剩余空间,因为名称暗示(因为您使用了weight属性)。相反,它占用的空间与布局父级一样多。这就是新名称为"match_parent"

的原因

答案 8 :(得分:4)

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取代。 我希望它能帮到你。

答案 9 :(得分:4)

width属性中将布局heightmatch_parent设置为XML时,它将占用父视图所具有的完整区域,即它将会一样大作为父母。

<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

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

<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(父高) - (20(paddingTop)+10(paddingBottom)) =(300 - 30)dp = 270 dp

fill_parent与match_parent

fill_parent的上一个名称是match_parent

对于API级别8及更高级别fill_parent重命名为match_parentfill_parent现已弃用。

所以fill_parentmatch_parent是一样的。

fill_parent的

API文档

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

答案 10 :(得分:3)

fill_parent:视图应该与其父视图一样大。

现在不推荐使用此内容fill_parent,并替换为match_parent。

答案 11 :(得分:3)

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

填充父级: 在API 8之前使用

匹配父级 这是从API 8+使用的 两者的功能 在填充旁边填充父视图

答案 12 :(得分:3)

match_parent,表示视图要与其父视图一样大(减去填充)。

wrap_content,这意味着视图要足够大以封闭其内容(加上填充)

为了更好地说明,我创建了一个演示此概念的示例布局。为了看到它的效果,我添加了每个textView内容的边框。

In&#34;匹配父母&#34; textView内容,我们可以看到它的布局宽度从它的父级全长开始。

但是我们可以看到&#34; Wrap Content&#34; textView内容,它的布局宽度包含在其内容(Wrap Content)长度中。

Android Layout

答案 13 :(得分:2)

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

答案 14 :(得分:2)

FILL_PARENT在API级别8和更高版本中已弃用,对于较高版本,它已重命名为MATCH_PARENT

FILL_PARENTMATCH_PARENT相同,FILL_PARENT在低于API级别8的较低版本中使用,而MATCH_PATENT在高于8的较高API级别中使用。

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

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

有关更多详细信息,请访问this

答案 15 :(得分:0)

1。 match_parent

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

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

默认情况下,当我们创建layout.xml时,我们将RelativeLayout作为默认的父视图,并带有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并设置其layout_width =“ match_parent”和layout_height =“ match_parent”,图形视图将显示类似这样的内容

match_parent_example

代码

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。 fill_parent:

这与match_parent相同,fill_parent在API级别8中已贬值。因此,如果您使用的是API级别8或更高级别,则必须避免使用fill_parent

让我们遵循与match_parent相同的步骤,只是在各处使用fill_parent。

您会看到fill_parent和match parent的行为没有差异。

答案 16 :(得分:0)

FILL_PARENTMATCH_PARENT都是相同的属性。 FILL_PARENT在API级别8中已过时。