LinearLayout vs RelativeLayout

时间:2012-07-06 05:36:37

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

RelativeLayout优于LinearLayout在android中有什么优势?对于一个特定的设计,你更喜欢哪一个?背后的原因是什么?

它(RelativeLayout)是否与HTML <div> ??

相当或类似

2 个答案:

答案 0 :(得分:46)

阅读this article

  

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

     

在RelativeLayout中,视图与其父级,RelativeLayout本身或其他视图对齐。例如,我们声明描述与RelativeLayout的底部对齐,并且标题位于描述之上并锚定到父级的顶部。使用GONE描述,RelativeLayout不知道在何处定位标题的下边缘。要解决此问题,您可以使用名为alignWithParentIfMissing的非常特殊的布局参数。

     

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

     

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

答案 1 :(得分:16)

通过名称,您可以了解LinearLayout按照您设置的方向线性垂直或水平添加视图。它会一个接一个地添加视图,这取决于设计的要求。 RelativeLayout添加了相互关联的视图,无需在RelativeLayout中声明方向。

例如,您希望在另一个下添加两个TextView,因此您将添加第一个TextView并通过添加{TextView引用第一个TextView XML文件中的{1}}。这样您就可以处理android:layout_below="first textview's id"