LinearLayout,RelativeLayout和AbsoluteLayout有什么区别?

时间:2011-02-05 05:51:19

标签: android android-layout android-linearlayout android-relativelayout android-framelayout

我对LinearLayout,RelativeLayout和AbsoluteLayout之间的区别感到困惑。 有人可以告诉我他们之间的确切差异吗?

5 个答案:

答案 0 :(得分:192)

LinearLayout表示您可以逐个(垂直/水平)对齐视图。

RelativeLayout表示基于其父母和其他观点的观点关系。

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

WebView加载html,静态或动态页面。

FrameLayout将孩子一个装在另一个上面,就像一个框架内的卡片一样,我们可以将一个放在另一个上面或框架内的任何位置。

已弃用 - AbsoluteLayout表示您必须在视图所在的位置给出确切的位置。

有关详情,请查看此地址https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts

答案 1 :(得分:47)

说明:

  • 框架布局:此设计用于阻挡屏幕上的某个区域以显示单个项目。
  • 线性布局:将其子项排列在单个列或单个行中的布局。
  • 相对布局:此布局是一个视图组,用于显示相对位置的子视图。
  • 表格布局:将其子项排列为行和列的布局。

更多信息:

FrameLayout

  

FrameLayout旨在阻挡屏幕上的某个区域以显示单个项目。通常,FrameLayout应该用于保存单个子视图,因为以可以扩展到不同屏幕大小而儿童不会相互重叠的方式组织子视图可能很困难。但是,您可以使用android:layout_gravity属性将多个子项添加到FrameLayout并通过为每个子项分配重力来控制它们在FrameLayout中的位置。

     

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

RelativeLayout

  

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

(当前文档here

TableLayout

  

TableLayout由许多TableRow个对象组成,每个对象定义一行(实际上,您可以有其他子对象,下面将对此进行说明)。 TableLayout容器不显示其行,列或单元格的边框线。每行有零个或多个单元格;每个单元格可以容纳一个View对象。该表的列数与具有最多单元格的行数相同。表格可以将单元格留空。单元格可以跨越列,也可以用HTML格式。

     

列的宽度由该列中具有最宽单元格的行定义。


注意:不推荐使用绝对布局。

答案 2 :(得分:3)

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

RelativeLayout:这使您可以指定子对象相对于彼此的位置(子B的左侧的子A)或父对象的位置(与父对象的顶部对齐)。它基于父母和其他观点的观点关系。

WebView:加载html,静态或动态页面。

有关更多信息,请参阅此链接:http://developer.android.com/guide/topics/ui/layout-objects.html

答案 3 :(得分:3)

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

RelativeLayout - RelativeLayout比LinearLayout更复杂,因此提供了更多功能。顾名思义,视图相对于彼此。

FrameLayout - 它表现为单个对象,其子视图相互重叠。 FrameLayout采用最大子元素的大小。

协调员布局 - 这是Android支持库中引入的最强大的ViewGroup。它的行为与FrameLayout相同,并且具有许多功能,可以在其子视图之间进行协调,例如,浮动按钮和快餐栏,具有可滚动视图的工具栏。

答案 4 :(得分:2)

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

  

LinearLayout 水平或垂直排列元素。

     

RelativeLayout 可帮助您根据特定规则排列UI元素。您可以指定以下规则:将此对齐到父级的左边缘,将其放在此元素的左侧/右侧等。

     

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

     

FrameLayout 允许沿Z轴放置视图。这意味着您可以将视图元素叠加在另一个之上。