我对两个XML属性有点困惑:match_parent
和fill_parent
。它们似乎是相同的,它们之间有什么区别吗?
我对两个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
为避免混淆,Google更改了名称。
原来的名称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:)
由于大多数手机的Android版本都是>= 2.2
,因此应该使用Match Parent以实现未来的兼容性...不确定他们何时会停止使用旧的Fill Parent常量!
FILL_PARENT
在API级别8中已过时,建议使用更高级别的API替代MATCH_PARENT
match_parent 用来替代 fill_parent,并将其设置为与父元素一样大小。只需使用match_parent,不再考虑fill_parent。我完全摒弃了fill_parent,现在一切都和往常一样完美。
点击这里了解更多。
两者具有相似的功能,唯一的区别在于fill_parent用于API级别8及以下,而match_parent用于API级别8或更高级别。
width
和height
设置为match_parent
时,它将占用父视图拥有的完整区域,即它将与父视图一样大。这是在XML
属性中设置的。<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的高度=300dp(父容器高度)-(20(paddingTop)+ 10(paddingBottom)) =(300-30)dp = 270 dp
fill_parent
是match_parent
的旧名称
对于API Level 8及更高版本,fill_parent
被重命名为match_parent
,并且fill_parent
现在已弃用。
因此,fill_parent
和match_parent
是相同的。
视图应该与其父容器一样大(减去填充)。 从API Level 8开始,此常量已过时,并被{@code match_parent}替换。
为了更贴切地描述其实际作用,"fill_parent"
并不能像其名称所暗示的那样填充剩余空间(对于这个目的,您需要使用weight属性)。相反,它会占用与其布局父级相同的空间。这就是为什么新名称是"match_parent"
。
match_parent
(你已经讲过了)和fill_parent
(你没有提到)之间的区别。你相反地将其与wrap_content
进行了比较,而问题并没有询问它。 - Jeremy Caneyfill_parent:视图应该和其父视图一样大。
现在这个 fill_parent 属性已过时,被 match_parent 属性所取代。