我对两个XML财产有点困惑:match_parent和fill_parent。看起来两者都是一样的。它们之间有什么区别吗?


当前回答

1.匹配租金

当您将布局宽度和高度设置为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”,图形视图将显示如下内容:,

匹配租用示例

Code

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_paint在API级别8中进行了折旧。因此,如果您使用的是API级别8或更高级别,则必须避免使用fill_rent

让我们遵循与match_parent相同的步骤,只需在任何地方使用fill__parent。

您将看到fill_parent和matchparent在行为上没有差异。

其他回答

当您在XML属性中将布局宽度和高度设置为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>

兔子的父母是红色的,孩子是绿色的。儿童占据所有区域。因为它的宽度和高度是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>

因此TextView高度=300dp(父高度)-(20(paddingTop)+10(paddingBottom))=(300-30)dp=270 dp

填充与匹配

fill_parent是match_parent的前一个名称

对于API级别8及更高版本,fill_parent重命名为match_parent,fill_perent现在已弃用。

所以fill_parent和match_parent是相同的。

fill_rent的API文档

视图应该与其父视图一样大(减去填充)。从API Level 8开始,此常量已弃用,并由{@code match_parent}替换。

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

FILL_PARTENT(在API级别8及更高版本中重命名为MATCH_PARENT),这意味着视图希望与其父视图一样大(减去填充)...fill_parent:视图应该和其父视图一样大(减去填充)。从API Level 8开始,此常量已弃用,并由match_parent替换。

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

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

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

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

match_parent用于代替fillprent,并将其设置为尽可能接近父级。只需使用match_parent,而忽略fill_paint。我彻底抛弃了fill_parent,一切都像往常一样完美。

查看此处了解更多信息。

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

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

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

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

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