Android 匹配父项和填充父项之间有什么区别?

Android 匹配父项和填充父项之间有什么区别?,android,android-layout,Android,Android Layout,我对两个XML属性有点困惑:match\u parent和fill\u parent。看来两者是一样的。它们之间有什么区别吗?它们是一样的(在API级别8+中)。使用匹配父项 填充父视图(在API级别8和更高级别中重命名为MATCH\u PARENT),这意味着视图希望与其父视图一样大(减去填充) fill\u parent:视图应与其父视图一样大(减去填充)。从API级别8开始,此常量被弃用,并由match\u parent替换 为了兼容性,最好坚持填充父项,即支持低于API 8的设备。 但

我对两个XML属性有点困惑:
match\u parent
fill\u parent
。看来两者是一样的。它们之间有什么区别吗?

它们是一样的(在API级别8+中)。使用
匹配父项

填充父视图(在API级别8和更高级别中重命名为MATCH\u PARENT),这意味着视图希望与其父视图一样大(减去填充)

fill\u parent
:视图应与其父视图一样大(减去填充)。从API级别8开始,此常量被弃用,并由
match\u parent
替换


为了兼容性,最好坚持填充父项,即支持低于API 8的设备。
但是如果你的应用目标是API 8及以上版本,你应该改用match_parent。

功能上没有区别,谷歌只是将名称从fill_parent改为match_parent,从API级别8(Android 2.2)改为match_parent。出于兼容性原因,填充父项仍然可用

LayoutParams.FILL_PARENT
LayoutParams.MATCH_PARENT
的值均为-1。不确定是什么诱使谷歌从填充父项更改为匹配父项:)


因为大多数
手机都>=Android 2.2
。。为了将来的兼容性,您应该使用匹配父项。。。不确定何时停止使用较旧的填充父常量

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

旧名称
fill parent
的问题在于它意味着它会影响父对象的维度,而
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>

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

只是为了给它一个更接近其实际行动的名称
“fill_parent”
不会像名称所暗示的那样填充剩余的空间(为此,请使用“权重”属性)。相反,它占用的空间与其布局父级相同。这就是为什么在API级别8中不推荐使用新名称“match\u parent”
FILL\u parent
match\u parent
use higherlevel API

match\u parent代替FILL\u parent,并将其设置为尽可能远。只需使用匹配父项并忘记填充父项。我完全抛弃了父母,一切都像往常一样完美


查看更多信息

match\u parent
fill\u parent
是相同的属性,用于定义水平或垂直全屏视图的宽度或高度

这些属性在android xml文件中使用,如下所示

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

以前的版本中使用了
fill\u parent
,但现在它已被弃用并替换为
match\u parent

我希望它能对您有所帮助。

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

填充父级:视图应该与其父级一样大


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

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

填充父对象: 在API 8之前使用

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

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

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

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

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

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


当您在
XML
属性中将布局
width
height
设置为
match\u 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>

所以文本视图高度=300dp(父高度)-(20(填充顶部)+10(填充底部)) =(300-30)dp =270 dp

填充父对象与匹配父对象
fill\u parent
match\u parent

对于API级别8及更高的
fill\u parent
重命名为
match\u parent
fill\u parent
现在不推荐使用

所以
fill\u parent
match\u parent
是相同的

填充父对象的API文档
视图应该与其父视图一样大(减去填充)。此常量从API级别8开始被弃用,并由{@code match\u parent}替换。

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

1。匹配父项

将布局宽度和高度设置为match_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>
默认情况下,当我们创建layout.xml时,我们将RelativeLayout作为默认父视图,使用android:layout\u width=“match\u parent”和android:layout\u height=“match\u 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并设置其布局
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" >