71

android中RelativeLayoutover的优势是什么?LinearLayout对于特定设计,您更喜欢哪一个,其背后的原因是什么?

它(RelativeLayout)是否与 HTML 类似或相似<div>

4

2 回答 2

46

阅读这篇文章

Android UI 工具包提供了几个相当容易使用的布局管理器,大多数时候,您只需要这些布局管理器的基本功能来实现用户界面。不幸的是,坚持基本功能并不是创建用户界面的最有效方式。一个常见的例子是滥用LinearLayout,这导致视图层次结构中的视图激增。添加到应用程序中的每个视图,或者更糟糕的是每个布局管理器都是有代价的:初始化、布局和绘图变得更慢。当您嵌套多个使用权重参数的 LinearLayout 时,布局传递可能会特别昂贵,这需要对子元素进行两次测量...

在 RelativeLayout 中,视图与其父视图、RelativeLayout 本身或其他视图对齐。例如,我们声明描述与 RelativeLayout 的底部对齐,并且标题位于描述上方并锚定到父级的顶部。在描述 GONE 的情况下,RelativeLayout 不知道将标题的底部边缘放置在哪里。为了解决这个问题,你可以使用一个非常特殊的布局参数alignWithParentIfMissing

这个布尔参数只是告诉RelativeLayout 在缺少约束目标时使用它自己的边缘作为锚点。例如,如果您将视图放置在 GONE 视图的右侧并将 alignWithParentIfMissing 设置为 true,RelativeLayout 将改为将视图锚定到其左边缘。在我们的例子中,使用 alignWithParentIfMissing 将导致 RelativeLayout 将标题的底部与它自己的底部对齐。

...例如,当您为 ListView 中的每个项目使用这样的布局时,差异将更加重要...

于 2012-07-06T08:43:47.170 回答
17

顾名思义,您可以LinearLayout通过您设置的方向线性添加垂直或水平视图。它将一个接一个地添加视图,这取决于设计的要求。并RelativeLayout添加相互关联的视图,无需在RelativeLayout.

例如,您想TextView在另一个下添加两个 s,因此您将首先添加,然后通过添加XML 文件来TextView引用第二个TextView和第一个。这样你就可以处理了。TextViewandroid:layout_below="first textview's id"RelativeLayout

于 2012-07-06T05:51:41.983 回答