在 Android 中,当布局小部件时,fill_parent
(match_parent
在 API 级别 8 及更高版本中)和之间有什么区别wrap_content
?
有没有可以指向的文档?我有兴趣很好地理解它。
在 Android 中,当布局小部件时,fill_parent
(match_parent
在 API 级别 8 及更高版本中)和之间有什么区别wrap_content
?
有没有可以指向的文档?我有兴趣很好地理解它。
任一属性都可以应用于 View 的(视觉控制)水平或垂直尺寸。它用于根据其内容或其父布局的大小设置视图或布局大小,而不是显式指定维度。
fill_parent
MATCH_PARENT
(在 API 级别 8 及更高版本中已弃用并重命名)
将小部件的布局设置为 fill_parent 将强制它展开以占用其所在布局元素中可用的空间。这大致相当于将 Windows 窗体控件的 dockstyle 设置为Fill
.
将顶级布局或控件设置为 fill_parent 将强制它占据整个屏幕。
wrap_content
将 View 的大小设置为 wrap_content 将强制它仅扩展到足以包含它所包含的值(或子控件)的程度。对于控件——如文本框 (TextView) 或图像 (ImageView)——这将包装正在显示的文本或图像。对于布局元素,它将调整布局大小以适应作为其子元素添加的控件/布局。
这大致相当于将 Windows 窗体控件的Autosize
属性设置为 True。
在线文档
此处的 Android 代码文档中有一些详细信息。
fill_parent
(deprecated) =match_parent
子视图的边框扩展以匹配父视图的边框。
wrap_content
子视图的边框紧紧地包裹在它自己的内容周围。
这里有一些图像可以使事情更清楚。绿色和红色是TextViews
。白色是LinearLayout
透彻的。
每个View
(a TextView
、an ImageView
、aButton
等)都需要设置视图的 thewidth
和 the height
。在 xml 布局文件中,可能如下所示:
android:layout_width="wrap_content"
android:layout_height="match_parent"
除了将宽度和高度设置为match_parent
or之外wrap_content
,您还可以将它们设置为某个绝对值:
android:layout_width="100dp"
android:layout_height="200dp"
但是,通常这不是很好,因为它对于不同尺寸的设备没有那么灵活。了解了wrap_content
and之后match_parent
,接下来要学习的是layout_weight
。
垂直线性布局
<?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>
水平线性布局
<?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>
此答案中的解释假设没有margin 或 padding。但即使有,基本概念还是一样的。视图边框/间距仅通过边距或填充的值进行调整。
fill_parent
将使元素的宽度或高度与父元素(即容器)一样大。
wrap_content
将使宽度或高度与包含其中的元素一样大。
fill_parent
:
一个组件被安排布局为fill_parent
将被强制扩展以填充布局单元成员,尽可能在空间中。这与 Windows 控件的 dockstyle 属性一致。顶部设置的布局或控件fill_parent
将强制它占据整个屏幕。
wrap_content
设置视图的大小wrap_content
将强制视图被扩展以显示所有内容。例如,TextView 和 ImageView控件设置为wrap_content
将显示其整个内部文本和图像。布局元素会根据内容改变大小。设置一个视图的Autosize 属性的大小wrap_content
大致相当于设置一个Windows 控件为True。
详情请查看此链接:http: //developer.android.com/reference/android/view/ViewGroup.LayoutParams.html