match_parent和fill_parent有什么区别?
我有点困惑两个XML属性: match_parent
和fill_parent
。 看来,两者都是一样的。 他们之间有什么区别?
他们是相同的东西(在API级别8+)。 使用match_parent
。
FILL_PARENT(在API级别8和更高版本中重命名为MATCH_PARENT),这意味着该视图要与其父级(减填充)一样大,
…
fill_parent
:这个视图应该和它的父类一样大(减去填充)。 该常数从API Level 8开始被弃用,并由match_parent
取代。
http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
谷歌改变了名字,以避免混淆。
旧名称fill parent
是,它意味着影响父项的维度,而match parent
更好地描述了结果行为 – 将维度与父项匹配。
这两个常量最终解析为-1
,并在应用程序中导致相同的行为。 具有讽刺意味的是,这个名称变更澄清了事情似乎增加了混淆,而不是消除它。
在功能上没有什么区别,Google只是从fill_parent改成了match_parent,从API级别8(Android 2.2)开始。 由于兼容性原因,FILL_PARENT仍然可用。
LayoutParams.FILL_PARENT
和LayoutParams.MATCH_PARENT
值均为-1。 不知道什么诱惑谷歌改变从填写家长匹配父:)
由于大多数phones are >= Android 2.2
..你应该使用匹配父未来的兼容性…不知道什么时候他们将停止旧的填充父常量!
为了兼容性,最好坚持fill_parent,即支持API 8以下的设备。 但是,如果您的应用程序的目标是API 8以上,则应该使用match_parent。
fill_parent
(在API级别8和更高版本中重命名为MATCH_PARENT
),这意味着该视图的大小与其父级(减去填充)
fill_parent
:这个视图应该和它的父类一样大(减去填充)。 该常数从API Level 8开始被弃用,并由match_parent
取代
对于Android API 1.6至2.1, match_parent
会引发错误,所以在这些情况下使用fill_parent
。 为了支持向后兼容性,最好使用fill_parent
- 两者都是表示值-1的静态最终常数
-
FILL_PARENT
在API级别8中已被弃用
所以MATCH_PARENT和FILL_PARENT是一样的吗?
是的, MATCH_PARENT
和FILL_PARENT
只是用于指定一个视图的父视图布局模式的同一个整数值的常量名(如果你好奇的话-1)。
那么为什么添加了MATCH_PARENT?
我记得罗马人(Android开发人员)说,他们已经改变了名字,因为“ fill_parent
”令开发人员感到困惑。 就事实而言,“ fill_parent
”不会填充剩余的空间(为了使用weight属性),但是它占用了与其父布局相同的空间。 这就是为什么新名称是“ match_parent
”
MATCH_PARENT
和FILL_PARENT
是一样的吗?
是的, MATCH_PARENT
和FILL_PARENT
只是用于指定一个视图的父视图布局模式的同一个整数值的常量名(如果你好奇的话-1)。
那么为什么添加了MATCH_PARENT
?
Android团队发现开发人员误解FILL_PARENT
意味着一个View
会填充剩下的剩余空间。 事实上,通过指定FILL_PARENT
, View
请求的大小与父View
一样大。 因此,(如罗曼·盖伊本人在本视频中10:56左右所解释的那样)将这个常量改名为MATCH_PARENT
以阐明其用法。
好的,我得到FILL_PARENT/MATCH_PARENT
工作原理。 如果我使用其中一个,那有什么关系?
FILL_PARENT
已被弃用。 被弃用不会使它成为魔鬼,但最终它会消失。 您的应用程序使用MATCH_PARENT
。 为什么当前选项的行为完全相同时使用不推荐使用的选项?
此外, FILL_PARENT
实际上是误导性的。 我亲眼看到人们感到困惑,因为它不像他们认为的那样工作。 实际上,我已经看到了一个使用FILL_PARENT
和MATCH_PARENT
标签,因为开发者认为(可以理解)他们是两种不同的布局模式。
你可以FILL_PARENT
吗?
以下是一个MATCH_PARENT/FILL_PARENT
混淆如何导致人们反复将头MATCH_PARENT/FILL_PARENT
在办公桌上的简单示例。 首先,获取一个包含几个View
实例的非常简单的布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="100dp" android:background="#FFFF00" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:background="@android:color/black" android:text="@string/hello_world" android:padding="50dp" /> <View android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF0000" /> </LinearLayout>
FILL_PARENT
在API级别8中被弃用, MATCH_PARENT
使用高级别API
match_parent被用来代替fill_parent,并且把它设置成和parent一样远。 只要使用match_parent,并忘记fill_parent 。 我完全抛弃了fill_parent ,一切都像往常一样完美。
在这里检查更多。
只是给它一个更接近它的实际行动的名称 。 "fill_parent"
不会填充剩余的空间,因为名称意味着(为此使用weight属性)。 相反,它占用了与其布局父母一样多的空间。 这就是为什么新名称是"match_parent"
当您在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
。
注意:如果父项被应用填充,那么该空间将不被包含。
<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
fill_parent与match_parent
fill_parent
是match_parent
以前的名字
对于API级别8及更高级别的fill_parent
重命名为match_parent
而fill_parent
现在已弃用。
所以fill_parent
和match_parent
是一样的。
API文档fill_parent
该视图应该与其父(减去填充)一样大。 这个常量从API Level 8开始被弃用,并被替换为{match_parent}。
两者都具有相似的功能,唯一不同的是fill_parent用于API级别8,match_parent用于API级别8或更高级别之后。
fill_parent(在API级别8和更高版本中重命名为MATCH_PARENT),这意味着该视图的大小与其父级(减去填充)
fill_parent:这个视图应该和它的父类一样大(减去填充)。 该常数从API Level 8开始被弃用,并由match_parent取代
对于Android API 1.6至2.1,match_parent会引发错误,所以在这些情况下使用fill_parent。 为了支持向后兼容性,最好使用fill_parent
两者都是表示值-1的静态最终常数
FILL_PARENT在API级别8中已被弃用
所以MATCH_PARENT和FILL_PARENT是相同的?
是的,MATCH_PARENT和FILL_PARENT只是用于指定一个视图的父视图布局模式的同一个整数值的常量名(如果你好奇的话-1)。
那么为什么MATCH_PARENT增加了?
正如Roman Guy(Android开发人员)说的,他们已经改变了名字,因为“fill_parent”让开发人员感到困惑。 就事实而言,“fill_parent”不会填充剩余的空间(为了使用weight属性),但是它需要
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
取代。 我希望它会帮助你。
fill_parent:视图应该和父视图一样大。
现在这个内容fill_parent被弃用,并被match_parent取代。
给我填充父母和匹配父母执行相同的功能只有:
填充父项 :在API 8之前使用
匹配父项这是从API 8+ 函数使用填充父视图旁边填充
match_parent,这意味着该视图要像其父(减填充)一样大。
wrap_content,这意味着视图要足够大以包含其内容(加上填充)
为了更好的说明,我创建了一个示例布局来展示这个概念。 为了看到它的效果,我添加了每个textView内容的边框。
在“匹配父级”textView内容中,我们可以看到它的布局宽度分布在它的父级整体长度之外。
但是我们可以在“Wrap Content”中看到textView的内容,它的内容(Wrap Content)长度就是布局宽度。
FILL_PARENT在API级别8和更高级别中被重命名为MATCH_PARENT,这意味着该视图要像父级(减去填充)一样大 – Google