我对两个 XML 属性有点困惑:match_parent
和 fill_parent
。似乎两者都是一样的。它们之间有什么区别吗?
它们是同一回事(在 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
谷歌更改了名称以避免混淆。
旧名称 fill parent
的问题在于它暗示它会影响父级的维度,而 match parent
更好地描述了结果行为 - 将维度与父级匹配。
这两个常量最终都解析为 -1
,因此在应用程序中产生相同的行为。具有讽刺意味的是,为了澄清事情而进行的名称更改似乎增加了而不是消除了混乱。
功能上没有区别,Google 只是从 API 级别 8 (Android 2.2) 将名称从 fill_parent 更改为 match_parent。出于兼容性原因,FILL_PARENT 仍然可用。
LayoutParams.FILL_PARENT
和 LayoutParams.MATCH_PARENT
的值都为 -1。不确定是什么诱使谷歌从 Fill Parent 更改为 Match Parent :)
由于大多数 phones are >= Android 2.2
.. 您应该使用 Match Parent 以实现未来的兼容性...不确定他们何时会停止使用旧的 Fill Parent 常量!
FILL_PARENT
在 API 级别 8 中已弃用,MATCH_PARENT
使用更高级别的 API
match_parent 用于代替 fill_parent 并将其设置为与父级一样远。只需使用 match_parent 并忘记 fill_parent。我完全放弃了fill_parent,一切都像往常一样完美。
查看 here 了解更多信息。
两者具有相似的功能,唯一的区别是 fill_parent 用于 API 级别 8 和 match_parent 在 API 级别 8 或更高级别之后使用。
当您在XML
属性中将布局width
和height
设置为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>
野兔父母是红色的,孩子是绿色的。孩子占据所有区域。因为它的 width
和 height
是 match_parent
。
https://i.stack.imgur.com/Cy8Jt.png
注意:如果父级应用了填充,则该空间将不包括在内。
<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>
https://i.stack.imgur.com/iVwD6.png
所以 TextView 高度 = 300dp(父高度) - (20(paddingTop)+10(paddingBottom)) = (300 - 30) dp = 270 dp
fill_parent 与 match_parent
fill_parent
是 match_parent
的旧名称
对于 API 级别 8 和更高级别,fill_parent
重命名为 match_parent
,现在已弃用 fill_parent
。
所以 fill_parent
和 match_parent
是相同的。
fill_parent 的 API 文档
视图应该与其父视图一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并替换为 {@code match_parent}。
只是为了给它起一个更接近实际操作的名称。 "fill_parent"
不会像名称所暗示的那样填充剩余空间(因为您使用 weight 属性)。相反,它占用与其布局父级一样多的空间。这就是为什么新名称是 "match_parent"
fill_parent:视图应该和它的父级一样大。
现在此内容 fill_parent 已弃用并由 match_parent 替换。
match_parent,这意味着视图希望与其父级一样大(减去填充)。
wrap_content,这意味着视图希望足够大以包含其内容(加上填充)
为了更好地说明,我创建了一个示例布局来演示这个概念。为了查看它的效果,我为每个 textView 内容添加了一个边框。
在“Match parent” textView 内容中,我们可以看到它的布局宽度超出了它的父级全长。
但是我们可以在“Wrap Content” textView 内容中看到,它的布局宽度包含在它的内容(Wrap Content)长度中。
https://i.stack.imgur.com/w3EtV.png
match_parent
(您已涵盖)和 fill_parent
(您未解决)之间的区别。相反,您将其与 wrap_content
进行了比较,该问题并未询问。
match_parent
和 fill_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
取代。我希望它会帮助你。
对我来说,填充父级和匹配父级执行相同的功能:
填充父级:在 API 8 之前使用
match parent 这在 API 8+ 中使用过 两者的功能 填充父视图除了填充
FILL_PARENT 在 API 级别 8 及更高级别中重命名为 MATCH_PARENT,这意味着视图希望与其父级一样大(减去填充) - Google
FILL_PARENT
已从 API 级别 8 及更高版本中弃用,对于更高版本,它被重命名为 MATCH_PARENT
两者都是相同的 FILL_PARENT
和 MATCH_PARENT
,FILL_PARENT
用于低于 API 级别 8 的较低版本,而 MATCH_PATENT 用于高于 8 的更高 API 级别。
FILL_PARENT
(在 API 级别 8 及更高版本中重命名为 MATCH_PARENT
),这意味着视图希望与其父视图一样大(减去填充)
fill_parent
:视图应该与其父视图一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并替换为 match_parent
。
欲了解更多详情,请访问this页面
FILL_PARENT
和 MATCH_PARENT
都是相同的属性。 FILL_PARENT
在 API 级别 8 中已弃用。
它们是同一回事(在 API 级别 8+ 中)。使用 match_parent。
FILL_PARENT 和 MATCH_PARENT 是相同的属性。 FILL_PARENT 在 API 级别 8 中已弃用。
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. 填充父:
这与 match_parent 相同,fill_parent 在 API 级别 8 中已贬值。因此,如果您使用 API 级别 8 或更高级别,则必须避免使用 fill_parent
让我们遵循与 match_parent 相同的步骤,只是在任何地方都使用 fill_parent。
您会看到 fill_parent 和 match parent 的行为没有区别。
不定期副业成功案例分享
-1
。我你感觉好多了,我也没有得到改善...... :-)-1
。您会收到错误消息,因为旧平台不知道相同常量的新名称。