fill_parent和wrap_content有什么区别?
在Android中,在布局小部件时, fill_parent
(API Level 8中的match_parent
和更高)和wrap_content
之间有什么区别?
有没有可以指向的文档? 我很有兴趣了解它。
任何一个属性都可以应用到View的(可视控制)水平或垂直尺寸。 它用于根据内容或其父级布局的大小设置视图或布局大小,而不是明确指定维度。
fill_parent
(在API级别8和更高版本中已弃用fill_parent
命名为MATCH_PARENT
)
将小部件的布局设置为fill_parent将强制扩展,以占用其放置的布局元素内的可用空间。这大致等同于将Windows窗体控件的dockstyle设置为Fill
。
将顶层布局或控件设置为fill_parent将强制它占据整个屏幕。
wrap_content
将视图的大小设置为wrap_content会强制扩展到足以容纳其包含的值(或子控件)。 对于控件(如文本框(TextView)或图像(ImageView)),这将包装显示的文本或图像。 对于布局元素,它将调整布局的大小以适合作为子元素添加的控件/布局。
这大致相当于将Windows窗体控件的Autosize
属性设置为True。
在线文档
在这里的Android代码文档中有一些细节。
-
FILL_PARENT
(在API级别8及更高版本中重命名为MATCH_PARENT
),这意味着视图的大小与其父级(减去填充) -
WRAP_CONTENT
,这意味着视图要足够大以包含其内容(加上填充)
fill_parent
(不build议使用) = match_parent
子视图的边框展开以匹配父视图的边框。
wrap_content
子视图的边界包裹着自己的内容。
下面是一些图像,使事情更清楚。 绿色和红色是TextViews
。 白色是一个LinearLayout
显示。
每个View
(一个TextView
,一个ImageView
,一个Button
等)需要设置视图的width
和height
。 在xml布局文件中,可能看起来像这样:
android:layout_width="wrap_content" android:layout_height="match_parent"
除了将宽度和高度设置为match_parent
或wrap_content
,还可以将它们设置为绝对值:
android:layout_width="100dp" android:layout_height="200dp"
一般来说,这不是很好,因为它不适合不同大小的设备。 在理解了wrap_content
和match_parent
,接下来要学习的是layout_weight
。
也可以看看
- android:layout_weight是什么意思?
- 视图的填充和边距之间的区别
- 重力vs layout_gravity
上面的图像的XML
垂直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
将使元素的宽度或高度与父元素一样大,换句话说就是容器。 -
wrap_content
将使宽度或高度尽可能大,以包含其中的元素。
点击这里查看ANDROID DOC参考
fill_parent
:
一个组件被安排的布局为fill_parent
将被强制扩展,以尽可能地在空间中填充布局单元成员。 这与Windows控件的dockstyle属性一致。 顶部设置布局或控制fill_parent
将强制它占据整个屏幕。
wrap_content
设置wrap_content
大小的视图将被强制查看被展开以显示所有的内容。 例如,将TextView和ImageView控件设置为wrap_content
将显示其整个内部文本和图像。 布局元素将根据内容更改大小。 设置Autosize属性wrap_content
大小的视图大致相当于为True设置一个Windows控件。
详情请查看此链接: http : //developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
wrap_content将View的大小设置minimum required to contain the contents it displays.
的minimum required to contain the contents it displays.
match_parent expands
视图to match the available space within the parent View, Fragment, or Activity.