Answers:
这两个属性都可以应用于View的水平或垂直大小。它用于根据其内容或父布局的大小设置“视图”或“布局”的大小,而不是显式指定尺寸。
fill_parent
(MATCH_PARENT
在API级别8及更高版本中已弃用并重命名)
将小部件的布局设置为fill_parent将迫使其扩展以占用其所放置的布局元素内的可用空间。这大致相当于将Windows Form Control的dockstyle设置为Fill
。
将顶层布局或控件设置为fill_parent将强制其占据整个屏幕。
wrap_content
将View的大小设置为wrap_content将迫使其仅扩展到足以容纳其包含的值(或子控件)的程度。对于控件-例如文本框(TextView)或图像(ImageView)-这将包裹所显示的文本或图像。对于布局元素,它将调整布局的大小以适合作为其子级添加的控件/布局。
大致相当于将Windows窗体控件的Autosize
属性设置为True。
在线文件
此处的Android代码文档中有一些详细信息。
fill_parent
(不建议使用)=match_parent
子视图的边框扩展为与父视图的边框匹配。
wrap_content
子视图的边框紧紧围绕其自身的内容。
这里有一些图像可以使情况更清晰。绿色和红色是TextViews
。白色是LinearLayout
透明的。
每个View
(a TextView
,an ImageView
,a Button
等)都需要设置视图的width
和height
。在xml布局文件中,可能看起来像这样:
android:layout_width="wrap_content"
android:layout_height="match_parent"
除了将width和height设置为match_parent
或wrap_content
,您还可以将它们设置为某个绝对值:
android:layout_width="100dp"
android:layout_height="200dp"
但是,通常情况并不理想,因为它对于不同大小的设备不那么灵活。了解wrap_content
和之后match_parent
,接下来要做的事情是layout_weight
。
垂直LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=wrap height=wrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=wrap"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=match"
android:background="#c5e1b0"/>
</LinearLayout>
水平LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapWrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapMatch"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MatchMatch"
android:background="#c5e1b0"/>
</LinearLayout>
该答案中的解释假定没有边距或填充。但是即使有,基本概念仍然相同。视图边框/间距仅通过边距或填充的值进行调整。
fill_parent
:
安排了组件的布局,fill_parent
将强制性地扩展以填充布局单元成员,并尽可能在空间中。这与Windows控件的dockstyle属性一致。顶部设置的布局或控件fill_parent
将强制其占据整个屏幕。
wrap_content
设置视图的大小wrap_content
将强制视图扩展以显示所有内容。例如,将TextView和ImageView控件设置为wrap_content
将显示其整个内部文本和图像。布局元素将根据内容更改大小。设置一个“自动调整大小”属性大小的视图,该视图wrap_content
大致等效于将Windows控件设置为True。
有关详细信息,请查看此链接:http : //developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parent
已match_parent
在API级别8和更高版本中对进行了重命名。