【问题标题】:difference between fill_parent and match_parent in android [duplicate]android中fill_parent和match_parent之间的区别[重复]
【发布时间】:2012-06-29 13:27:08
【问题描述】:

可能重复:
what is the difference between match_parent and fill_parent property in android
FILL_PARENT and MATCH_PARENT

我已经浏览了 android 开发者网站,他们给出了以下区别:

注意:从 Android 2.2(API 级别 8)开始,“fill_parent”已重命名为“match_parent”以更好地反映行为。原因是如果您将视图设置为“fill_parent”,则在考虑同级视图后,它不会扩展以填充剩余空间,而是无论如何都会扩展以匹配父视图的大小——它将与任何同级视图重叠。

但是任何人都可以用例子来解释。这样事情就可以清楚了。

【问题讨论】:

标签: android


【解决方案1】:

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

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

fill_parent: 视图应该和它的父级一样大(减去填充)。从 API 级别 8 开始不推荐使用此常量,并替换为 match_parent

对于 Android API 1.62.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_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
  • 这个例子是我想要的。再次感谢 Tanis.7x。
猜你喜欢
  • 2013-04-02
  • 2013-04-04
  • 2012-04-14
  • 2011-08-11
  • 2012-01-20
  • 1970-01-01
  • 2013-06-03
  • 2017-12-06
  • 1970-01-01
相关资源
最近更新 更多