LinearLayout、RelativeLayout和AbsoluteLayout之间有哪些区别?

191

我对LinearLayout、RelativeLayout和AbsoluteLayout之间的区别感到困惑。请问有人能告诉我它们之间的确切区别吗?

5个回答

230

LinearLayout 可以将视图一次对齐(垂直或水平)。

RelativeLayout 是基于视图与其父视图和其他视图之间的关系来布局的。

ConstraintLayout 类似于 RelativeLayout,它使用关系来定位和调整小部件的大小,但具有额外的灵活性,并且在布局编辑器中更易于使用。

WebView 用于加载 HTML、静态或动态页面。

FrameLayout 用于将子视图堆叠在一起,就像在框架内放置卡片一样,我们可以将一个视图堆叠在另一个视图上方或任何位置。

已弃用 - AbsoluteLayout 意味着您必须给出视图应该出现的确切位置。

更多信息,请参见此网址:https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts


2
也请查看这个链接.. http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts - Ganapathy C
3
绝对布局(AbsoluteLayout)已被弃用! - Fry
4
@Fry,我在2年前已经回答过了这个问题。请阅读问题。 - Ganapathy C
1
显然,AbsoluteLayout被弃用是有原因的;如果内容不适合,它会随意扔东西。你最好使用LinearLayout并将其所有填充设置为0 - EpicPandaForce

54

定义:

  • 帧布局:旨在屏幕上阻挡出一个区域以显示单个项。
  • 线性布局:将其子视图排列在单个列或单行中的布局。
  • 相对布局:这是一个视图组,用于在相对位置上显示子视图。
  • 表格布局:将其子项排列成行和列的布局。

更多信息:

FrameLayout

帧布局旨在屏幕上阻挡出一个区域以显示单个项。一般来说,应该使用FrameLayout来容纳一个单独的子视图,因为如果不重叠彼此,很难以可扩展的方式组织子视图以适应不同的屏幕尺寸。但是,您可以向FrameLayout添加多个子项,并通过为每个子项分配重心(使用android:layout_gravity属性)来控制它们在FrameLayout内的位置。

子视图以堆栈形式绘制,最近添加的子视图位于顶部。FrameLayout的大小是其最大子项的大小(加上填充),无论是否可见(如果FrameLayout的父级允许)。

RelativeLayout

RelativeLayout是一种非常强大的用户界面设计工具,因为它可以消除嵌套的视图组并使您的布局层次结构保持扁平,从而提高性能。如果您发现自己使用了几个嵌套的LinearLayout组,则可以将它们替换为单个RelativeLayout。

(当前文档在此)

TableLayout

一个TableLayout包含多个TableRow对象,每个对象定义了一行(实际上还可以有其他子元素,将在下面解释)。TableLayout容器不会为其行、列或单元格显示边框线。每行可以有零个或多个单元格,每个单元格可以容纳一个View对象。该表的列数与具有最多单元格的行相同。表格可以留空单元格。单元格可以跨越多个列,就像HTML中一样。
列的宽度由该列中最宽的单元格所在的行定义。
注意:绝对布局已被弃用。

5

LinearLayout:一种布局方式,将其子视图组织成单个水平或垂直行。如果窗口长度超过了屏幕长度,则会创建滚动条。这意味着您可以逐个对齐视图(垂直/水平)。

RelativeLayout:此布局方式允许您指定子对象相对于彼此的位置(子A在子B的左侧),或相对于父级(与父级顶部对齐)。它基于视图与其父级和其他视图之间的关系。

WebView:用于加载HTML、静态或动态页面。

更多信息请参阅以下链接:http://developer.android.com/guide/topics/ui/layout-objects.html


4

LinearLayout - 在LinearLayout中,视图可以按垂直或水平方向组织。

RelativeLayout - RelativeLayout比LinearLayout更复杂,因此提供了更多的功能。视图是相对于彼此放置的,正如其名称所示。

FrameLayout - 它表现为单个对象,其子视图重叠在彼此上面。FrameLayout根据最大的子元素的大小来确定自己的大小。

Coordinator Layout - 这是Android支持库中引入的最强大的ViewGroup。它的行为类似于FrameLayout,并具有许多协调其子视图的功能,例如浮动按钮和Snackbar、带有可滚动视图的工具栏。


3
在这里有一个很好的解释:
https://www.cuelogic.com/blog/using-framelayout-for-designing-xml-layouts-in-android

LinearLayout 可以横向或纵向地排列元素。

RelativeLayout 帮助你根据特定的规则安排UI元素。您可以指定诸如将其与父元素的左边缘对齐、将其放置在此元素的左侧/右侧等规则。

AbsoluteLayout 用于绝对定位,即您可以指定视图应该去的精确坐标。

FrameLayout 允许在Z轴上放置视图。这意味着您可以将视图元素堆叠在彼此之上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接