What is the difference between match_parent and fill_parent?
我对两个XML属性有点困惑:
它们是相同的(在API级别8+中)。使用
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 bymatch_parent .
http://developer.android.com/reference/android/view/viewgroup.layoutparams.html
为了避免混淆,谷歌改名了。
旧名称
两个常量最终都会解析为
功能上没有区别,Google只是将名称从fill_parent改为match_parent,从api级别8(android 2.2)改为match_parent。由于兼容性原因,填充父级仍然可用。
因为大部分的江户一〔3〕。为了将来的兼容性,您应该使用match parent…不确定何时停止旧的填充父常量!
为了兼容性起见,最好坚持填充父级,即在支持低于API 8的设备时。但是,如果你的应用程序目标是API 8及更高版本,你应该使用Match_Parent。
Match_Parent用于代替Fill_Parent,并将其设置为一直到父级。只需使用match_parent,然后忘记fill_parent。我完全抛弃了填充家长,一切都像往常一样完美。
在这里查看更多信息。
在API 8级和
只是给它一个更接近它实际行动的名字。
两者都有相似的功能,唯一的区别是填充父级用于API级别8,匹配父级用于API级别8或更高级别之后。
当您在
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> |
兔子的父母是红色的,孩子是绿色的。孩子占据了所有的区域。因为它是
注意:如果应用了父级填充,则不会包括该空间。
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> |
所以textview hight=300dp(父级hight)-(20(paddingtop)+10(paddingbottom))=(300~30)DP= 270 DP
填充父级与匹配父级对于API 8级及更高级别的
所以
视图应该和其父视图一样大(减去填充)。此常量从API级别8开始被弃用,并替换为@code match_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" |
填充父视图:视图应该和父视图一样大。
现在,此内容填充父级已被弃用,并替换为匹配父级。
对我来说,填充父级和匹配父级只执行相同的功能:
填充父代:在API 8之前使用过
配对亲本这是从API 8中使用的+两者的功能填充填充旁边的父视图
匹配父级,这意味着视图希望与其父级一样大(减去填充)。
包装内容,这意味着视图要足够大以容纳其内容(加上填充)
为了更好的说明,我创建了一个示例布局来演示这个概念。为了观察它的效果,我添加了每个textview内容的边框。
在"匹配父级"文本视图内容中,我们可以看到它的布局宽度超出了父级的整个长度。
但是我们可以在"包装内容"文本视图内容中看到,它的布局宽度是包装内容(包装内容)的长度。
两者都是相同的
有关详细信息,请访问此页
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_父级
让我们按照与匹配父级相同的步骤操作,只需在任何地方使用填充父级。
你会发现填充父对象和匹配父对象在行为上没有区别。