【问题标题】:What are the differences between LinearLayout, RelativeLayout, and AbsoluteLayout?LinearLayout、RelativeLayout 和 AbsoluteLayout 有什么区别?
【发布时间】:2011-06-21 18:43:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    RelativeLayout 表示基于其父视图与其他视图的关系。

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

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

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

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

    欲了解更多信息,请查看此地址https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts

    【讨论】:

    • 检查这个链接也老兄.. mobiforge.com/designing/story/…
    • AbsoluteLayout 已弃用!
    • @Fry 我在 2 年前回答了这个问题。请阅读问题。
    • 显然AbsoluteLayout 被弃用是有原因的;如果内容不合适,它会随机扔东西。最好使用LinearLayout 并将其所有填充设置为0
    【解决方案2】:

    定义:

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

    更多信息:

    FrameLayout

    FrameLayout 的设计目的是在屏幕上屏蔽一个区域以显示单个项目。通常,应该使用 FrameLayout 来保存单个子视图,因为很难以一种可缩放到不同屏幕尺寸的方式来组织子视图,而不会使子视图相互重叠。但是,您可以使用android:layout_gravity 属性将多个子项添加到 FrameLayout 并通过为每个子项分配重力来控制它们在 FrameLayout 中的位置。

    子视图在堆栈中绘制,最近添加的子视图在顶部。 FrameLayout 的大小是其最大子项(加上填充)的大小,可见与否(如果 FrameLayout 的父项允许)。

    RelativeLayout

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

    (当前文档here

    TableLayout

    一个 TableLayout 由许多 TableRow 对象组成,每个对象定义一行(实际上,您可以有其他子对象,这将在下面解释)。 TableLayout 容器不会为其行、列或单元格显示边框线。每行有零个或多个单元格;每个单元格可以容纳一个 View 对象。该表的列与单元格最多的行一样多。表格可以将单元格留空。单元格可以跨列,就像在 HTML 中一样。

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


    注意:绝对布局已弃用。

    【讨论】:

      【解决方案3】:

      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,并且有很多功能可以在其子视图之间进行协调,例如浮动按钮和快餐栏、带有可滚动视图的工具栏。

        【讨论】:

          【解决方案5】:

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

          LinearLayout 水平或垂直并排排列元素。

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

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

          FrameLayout 允许沿 Z 轴放置视图。这意味着您可以将视图元素一层一层地堆叠起来。

          【讨论】:

            猜你喜欢
            • 2018-04-09
            • 1970-01-01
            • 1970-01-01
            • 2016-09-16
            • 2012-11-21
            • 1970-01-01
            • 2010-10-02
            • 2011-12-12
            • 2010-09-16
            相关资源
            最近更新 更多