LinearLayout vs RelativeLayout

Android中的RelativeLayoutLinearLayout有什么优势? 对于一个你更喜欢的特定devise,背后的原因是什么?

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

阅读这篇文章 :

Android UI工具包提供了一些相当易于使用的布局pipe理器,而且大多数时候只需要这些布局pipe理器的基本function来实现用户界面。 不幸的是,坚持基本function不是创build用户界面的最有效的方法。 一个常见的例子是LinearLayout的滥用,这会导致视图层次结构中的视图泛滥。 您添加到应用程序中的每个视图,或者更糟糕的每个布局pipe理器都是有代价的:初始化,布局和绘制变得更慢。 当您嵌套使用weight参数的多个LinearLayout时,布局过程可能特别昂贵,这需要对子进行两次测量。

在一个RelativeLayout中,视图与父对象,RelativeLayout本身或其他视图alignment。 例如,我们声明描述符与RelativeLayout的底部alignment,并且标题位于描述之上并锚定在父代的顶部。 使用描述GONE,RelativeLayout不知道标题底边的位置。 为了解决这个问题,你可以使用一个非常特殊的布局参数叫做alignWithParentIfMissing 。

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

…当你在一个ListView中的每一个项目使用这样的布局时,这种差异会变得更加重要…

通过名称,您可以知道LinearLayout按照您设置的方向垂直或水平线性添加视图。 它会一个接一个地增加意见,这将取决于devise的要求。 而RelativeLayout增加了相互关联的视图,不需要在RelativeLayout声明方向。

举个例子,你想添加两个TextView的一个在另一个下,所以你将添加第一个TextView并通过在XML文件中添加android:layout_below="first textview's id"来引用第二个TextView和第一个TextView 。 这样你可以处理RelativeLayout