MATCH_PARENT与FILL_PARENT:不要做什么和怎么做

本文详细解释了MATCH_PARENT和FILL_PARENT的区别,指出FILL_PARENT已过时并被弃用。推荐使用MATCH_PARENT进行布局设定,以避免潜在的误解和布局问题。并通过实例演示了MATCH_PARENT在不同场景下的应用,帮助开发者正确理解和使用MATCH_PARENT布局模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是它的短:除非要编译升级Froyo(API 8),请立即停止使用FILL_PARENT指定layout_width和layout_height 。
使用MATCH_PARENT 。 它们具有相同的整数值,但FILL_PARENT已被废弃,这个名字本身就是误导。 请使用MATCH_PARENT 。

为什么你应该只使用MATCH_PARENT
好吧,如果你还在读书,然后我假设你是不是对编译和升级Froyo,要么你不明白或者不跟我暂时就这么下来同意FILL_PARENT 。

所以MATCH_PARENT和FILL_PARENT是一样的吗?
是的,  MATCH_PARENTFILL_PARENT是相同的整数值用于指定一个不同的只是常量名(如果你是好奇-1) View其父项内的布局模式。

那么,为什么MATCH_PARENT加入?
Android团队发现,开发商被曲解FILL_PARENT意味着一个View将填补留在其父的剩余空间。 事实上,通过指定FILL_PARENT ,该View请求应象大是其父母。
因此,(如在解释罗曼盖伊自己 这段视频在10:56左右)不断更名MATCH_PARENT澄清其使用。

好吧,我得怎么FILL_PARENT / MATCH_PARENT工作。 这有什么关系,如果我使用一个或另一个?
FILL_PARENT已经过时了。 被弃用并不能使它魔鬼,但最终还是会自行消失。 你的应用程序是使用更多面向未来的MATCH_PARENT 。 为什么要使用过时的选项时,
当前选项的行为完全相同?
此外, FILL_PARENT实际上是误导性的。 我曾亲眼见过人们混淆,因为它不工作,他们想的那样的方式。 事实上,我已经看到了同时使用一个
标签FILL_PARENT和MATCH_PARENT ,因为开发人员认为(可以理解),它们是两个不同的布局模式。
是最新的。 是明确的。 使用MATCH_PARENT 。


如何你可以得到绊倒了试图FILL_PARENT
这里有一个如何一个简单的例子MATCH_PARENT / FILL_PARENT混乱可能导致人反复运用他们的头到自己的办公桌。 首先,服用含有几个一个非常简单的布局View实例。
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.               android:layout_width="match_parent"
  3.               android:layout_height="match_parent"
  4.               android:orientation="vertical">       
  5.     <View
  6.             android:layout_width="match_parent"
  7.             android:layout_height="100dp"
  8.             android:background="#FFFF00" />
  9.     <TextView
  10.             android:layout_width="match_parent"
  11.             android:layout_height="wrap_content"
  12.             android:gravity="center"
  13.             android:background="@android:color/black"
  14.             android:text="@string/hello_world"
  15.             android:padding="50dp" />
  16.     <View
  17.             android:layout_width="match_parent"
  18.             android:layout_height="match_parent"
  19.             android:background="#FF0000" />         
  20. </LinearLayout>
复制代码
而这也正是它看起来在设备上运行时。

哇,你设置了红色的View到MATCH_PARENT ,它填补了剩余空间LinearLayout 。 这是不一样大是其父母。 怎么办?
而这里的混乱。 LinearLayout将其子顺序,一个孩子的起始位置是以前的孩子的结束位置。 一个孩子请求父母给它一定的尺寸,但是这并不影响在孩子的位置。
由于红色视图是第三,它是奠定了前两个之后,因此,最终不作为“大如父。”
这是一个后果不如何的位置, MATCH_PARENT /FILL_PARENT工作。 在LinearLayout信守孩子的请求意见,最好是可以的,但不能保证他们。

现在,让我们看看当我们切换事情使红色周围发生什么事View第一个布局:
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.               android:layout_width="match_parent"
  3.               android:layout_height="match_parent"
  4.               android:orientation="vertical">    
  5.     <View
  6.             android:layout_width="match_parent"
  7.             android:layout_height="match_parent"
  8.             android:background="#FF0000" />
  9.     <View
  10.             android:layout_width="match_parent"
  11.             android:layout_height="100dp"
  12.             android:background="#FFFF00" />
  13.     <TextView
  14.             android:layout_width="match_parent"
  15.             android:layout_height="wrap_content"
  16.             android:gravity="center"
  17.             android:background="@android:color/black"
  18.             android:text="@string/hello_world"
  19.             android:padding="50dp" />             
  20. </LinearLayout>
复制代码

现在,这里是什么样子,而且很容易看出差别。 由于LinearLayout勾画出红色景观第一,它是定位在顶部,可以充分满足其MATCH_PARENT请求。 这导致了红色View推动其他两个淡出人们的视线。

好吧,如果我真的想做出一个View填写其父的剩余空间?

-----------------------------------------------------------------------------------------------------------------------------------
如何真正“补母”
实施“补母”的总体战略是使用LinearLayout和layout_weight属性。 现在我们将用它们来解决我们认为被接管的斑点(即红二布局View )。
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.               android:layout_width="match_parent"
  3.               android:layout_height="match_parent"
  4.               android:orientation="vertical">             
  5.     <View
  6.             android:layout_width="match_parent"
  7.             android:layout_height="0dp"
  8.             android:layout_weight="1"
  9.             android:background="#FF0000" />
  10.     <View
  11.             android:layout_width="match_parent"
  12.             android:layout_height="100dp"
  13.             android:background="#FFFF00" />
  14.     <TextView
  15.             android:layout_width="match_parent"
  16.             android:layout_height="wrap_content"
  17.             android:gravity="center"
  18.             android:background="@android:color/black"
  19.             android:text="@string/hello_world"
  20.             android:padding="50dp" />
  21. </LinearLayout>
复制代码

在这里,我们能够保持红View的第一个孩子在LinearLayout ,并让它只铺设了另外两个意见后填写剩余的空间。

真的有永远只是一种方式来创建一个布局。如果我们想只是让红色View最后在LinearLayout ,并让它填补剩余的空间,我们可以使用故事的第一个布局,
结束。 但是,必须明白为什么它的工作原理,当它可能无法正常工作是非常重要的。

原文:http://randomlytyping.com/blog/2014/2/9/matchparent-vs-fillparent  这是翻译的文章

match_parent_vs_fill_parent_layout_01.png (13.54 KB, 下载次数: 3)

match_parent_vs_fill_parent_layout_01.png

match_parent_vs_fill_parent_layout_02.png (4.56 KB, 下载次数: 3)

match_parent_vs_fill_parent_layout_02.png

match_parent_vs_fill_parent_layout_03.png (13.41 KB, 下载次数: 6)

match_parent_vs_fill_parent_layout_03.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值