【发布时间】:2011-06-21 18:43:15
【问题描述】:
我对 LinearLayout、RelativeLayout 和 AbsoluteLayout 之间的区别感到困惑。 有人可以告诉我它们之间的确切区别吗?
【问题讨论】:
标签: android android-layout android-linearlayout android-relativelayout android-framelayout
我对 LinearLayout、RelativeLayout 和 AbsoluteLayout 之间的区别感到困惑。 有人可以告诉我它们之间的确切区别吗?
【问题讨论】:
标签: android android-layout android-linearlayout android-relativelayout android-framelayout
LinearLayout 表示您可以一一对齐视图(垂直/水平)。
RelativeLayout 表示基于其父视图与其他视图的关系。
ConstraintLayout 类似于 RelativeLayout,因为它使用关系来定位和调整小部件的大小,但具有额外的灵活性并且更易于在布局编辑器中使用。
WebView 加载 html、静态或动态页面。
FrameLayout 将子元素放在另一个之上,就像在框架内的卡片一样,我们可以将一个放在另一个之上或框架内的任何位置。
已弃用 - AbsoluteLayout 表示您必须给出视图应该在的确切位置。
欲了解更多信息,请查看此地址https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts
【讨论】:
AbsoluteLayout 被弃用是有原因的;如果内容不合适,它会随机扔东西。最好使用LinearLayout 并将其所有填充设置为0。
FrameLayout 的设计目的是在屏幕上屏蔽一个区域以显示单个项目。通常,应该使用 FrameLayout 来保存单个子视图,因为很难以一种可缩放到不同屏幕尺寸的方式来组织子视图,而不会使子视图相互重叠。但是,您可以使用
android:layout_gravity属性将多个子项添加到 FrameLayout 并通过为每个子项分配重力来控制它们在 FrameLayout 中的位置。子视图在堆栈中绘制,最近添加的子视图在顶部。 FrameLayout 的大小是其最大子项(加上填充)的大小,可见与否(如果 FrameLayout 的父项允许)。
RelativeLayout 是用于设计用户界面的非常强大的实用程序,因为它可以消除嵌套视图组并保持布局层次结构平坦,从而提高性能。如果您发现自己使用了多个嵌套的 LinearLayout 组,则可以将它们替换为单个 RelativeLayout。
(当前文档here)
一个 TableLayout 由许多
TableRow对象组成,每个对象定义一行(实际上,您可以有其他子对象,这将在下面解释)。 TableLayout 容器不会为其行、列或单元格显示边框线。每行有零个或多个单元格;每个单元格可以容纳一个 View 对象。该表的列与单元格最多的行一样多。表格可以将单元格留空。单元格可以跨列,就像在 HTML 中一样。列的宽度由该列中单元格最宽的行定义。
注意:绝对布局已弃用。
【讨论】:
LinearLayout : 将其子级组织成单个水平或垂直行的布局。如果窗口的长度超过屏幕的长度,它会创建一个滚动条。这意味着您可以一一对齐(垂直/水平)。
RelativeLayout : 这使您可以指定子对象的相对位置(子对象 A 在子对象 B 的左侧)或相对于父对象的位置(与父对象的顶部对齐)。它基于来自其父母的观点和其他观点的关系。
WebView : 加载 html、静态或动态页面。
更多信息请参考此链接:http://developer.android.com/guide/topics/ui/layout-objects.html
【讨论】:
LinearLayout - 在 LinearLayout 中,视图以垂直或水平方向组织。
RelativeLayout - RelativeLayout 比 LinearLayout 复杂得多,因此提供了更多的功能。顾名思义,视图是相对于彼此放置的。
FrameLayout - 它表现为单个对象,其子视图相互重叠。 FrameLayout 采用最大子元素的大小。
Coordinator Layout - 这是 Android 支持库中引入的最强大的 ViewGroup。它的行为类似于 FrameLayout,并且有很多功能可以在其子视图之间进行协调,例如浮动按钮和快餐栏、带有可滚动视图的工具栏。
【讨论】:
这里有很好的解释:
https://www.cuelogic.com/blog/using-framelayout-for-designing-xml-layouts-in-android
LinearLayout 水平或垂直并排排列元素。
RelativeLayout 可帮助您根据特定规则排列 UI 元素。您可以指定规则,例如:将此对齐到父级的左边缘,将其放置在此元素的左侧/右侧等。
AbsoluteLayout 用于绝对定位,即您可以指定视图的确切坐标。
FrameLayout 允许沿 Z 轴放置视图。这意味着您可以将视图元素一层一层地堆叠起来。
【讨论】: