android中fill_parent和match_parent之间的区别[重复]
Posted
技术标签:
【中文标题】android中fill_parent和match_parent之间的区别[重复]【英文标题】:difference between fill_parent and match_parent in android [duplicate] 【发布时间】:2012-06-29 13:27:08 【问题描述】:可能重复:what is the difference between match_parent and fill_parent property in androidFILL_PARENT and MATCH_PARENT
我已经浏览了 android 开发者网站,他们给出了以下区别:
注意:从 Android 2.2(API 级别 8)开始,“fill_parent”已重命名为“match_parent”以更好地反映行为。原因是如果您将视图设置为“fill_parent”,则在考虑同级视图后,它不会扩展以填充剩余空间,而是无论如何都会扩展以匹配父视图的大小——它将与任何同级视图重叠。
但是任何人都可以用例子来解释。这样事情就可以清楚了。
【问题讨论】:
哦不,又不是这个问题了! ***.com/questions/9949387/… ; ***.com/questions/10854717/… ; ***.com/questions/8516825/… ; ***.com/questions/7608196/… ; ***.com/questions/5761960/… 【参考方案1】:它们是相同的(在 API 级别 8+ 中)。使用 match_parent。
fill_parent
(在 API 级别 8 及更高级别中重命名为 MATCH_PARENT
),这意味着视图希望与其父级一样大(减去填充)
fill_parent
: 视图应该和它的父级一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并替换为 match_parent
对于 Android API 1.6 到 2.1 match_parent
会抛出错误,所以在这些情况下使用 fill_parent。支持向后兼容,最好使用fill_parent
我记得 Roman Guy(Google 的 Android 开发人员)说过,他们更改了名称是因为 "fill_parent"
让开发人员感到困惑。事实上,"fill_parent"
不会填充剩余空间(因为您使用 weight 属性),但它占用的空间与其布局父级一样多。这就是为什么新名称是"match_parent"
【讨论】:
它们是相同的东西(在 API 级别 8+ 中)。使用 match_parent。 FILL_PARENT(在 API 级别 8 及更高版本中重命名为 MATCH_PARENT),这意味着视图希望与其父级一样大(减去填充)......你可以举例说明一下吗? 使用match_parent
不会抛出错误,无论您的目标是什么版本的Android...
@ArunKumar match_parent 只是 Google 开发人员为 api 8 及更高版本采用的命名约定!!
这样就没有区别了。那为什么google改了呢?
fill_parent
的问题在于它实际上并没有 填充 父级,而是使它具有与父级相同的尺寸......或换句话说,它匹配父维度。【参考方案2】:
两者都是static final
常量,表示值-1
。当你编译你的.apk
时,它们被硬编码到字节码中,所以没有区别,并且都完全兼容所有Android SDK版本。
您会在文档中看到它们都代表相同的值:
public static final int FILL_PARENT
视图请求的高度或宽度的特殊值。 FILL_PARENT 意味着视图想要与其父视图一样大,减去 父母的填充,如果有的话。从 API 开始不推荐使用此值 8 级并被 MATCH_PARENT 取代。
常数值:-1 (0xffffffff)
public static final int MATCH_PARENT
请求的高度或宽度的特殊值 一个看法。 MATCH_PARENT 意味着视图想要和它的一样大 父级,减去父级的填充(如果有)。在 API 级别 8 中引入。
常数值:-1 (0xffffffff)
【讨论】:
那么为什么谷歌要改变它?这背后有一些原因。 我同意,但实际上你可以用布局来解释。 他们更改它的原因是因为 android 团队认为fill_parent
是一个误导性名称......他们认为 match_parent
这个名称更适合其实际行为。
fill_parent
的问题在于它实际上并没有填充父级,而是使它具有与父级相同的尺寸......或换句话说,它匹配父维度。【参考方案3】:
澄清是这样的:
Fill parent 暗示(或可能暗示)多个并排视图将展开以完全填充其容器。因此,人们可能会认为将“fill_parent”添加到父视图的两个视图都会调整为父视图大小的 50%。 匹配父级更清晰,因为将视图设置为 fill_parent 实际上会将大小设置为容器的大小。正如其他用户所说(以及文档所述),这纯粹是为了让使用“fill_parent”的结果更加明显。
【讨论】:
假设您有一个垂直的LinearLayout
,添加了两个TextViews
,每个height: "wrap_content"
和width: "fill_parent"
。使用fill_parent
,有些人可能期望两个TextView 会并排出现,共同扩展以填充LinearLayout。实际上,这些视图匹配它们父级的宽度,并且会垂直堆叠。
感谢您的解释,现在我明白了。
schemas.android.com/apk/res/android" android:layout_ android:layout_ android:orientation="vertical"> 以上是关于android中fill_parent和match_parent之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章
android中的fill_parent和match_parent有啥区别[重复]
FILL_PARENT 和 MATCH_PARENT [重复]
android中的wrap_content,match_parent, fill_parent
android布局--Android fill_parentwrap_content和match_parent的区别