线性布局 vs 相对布局

71
在安卓开发中,RelativeLayout 相对于 LinearLayout 有哪些优势?在特定设计中你会选择哪个并说明原因? RelativeLayout 是否与 HTML 的 <div> 有类似之处?

3
最好在谷歌上搜索你的问题标签LinearLayout vs RelativeLayout - user370305
这篇文章中有一个非常好的答案:何时使用LinearLayout vs. RelativeLayout,点赞! - scatmoi
2个回答

46

阅读这篇文章

Android UI工具包提供了几个布局管理器,它们相当容易使用,大多数情况下,您只需要这些布局管理器的基本功能来实现用户界面。遗憾的是,坚持使用基本功能不是创建用户界面最有效的方法。常见的例子是滥用LinearLayout,这导致视图层次结构中的视图呈指数级增长。您添加到应用程序中的每个视图,或更糟糕的是每个布局管理器,都有代价:初始化、布局和绘制都会变得更慢。当您嵌套若干个使用weight参数的LinearLayout时,布局过程可能尤其昂贵,因为每个孩子都要测量两次...

在RelativeLayout中,视图要么与其父视图即RelativeLayout自身对齐,要么与其他视图对齐。例如,我们声明描述与RelativeLayout底部对齐,并将标题定位在描述上方并锚定到父项的顶部。如果将描述设置为GONE,则RelativeLayout不知道如何定位标题的底部边缘。要解决此问题,可以使用一个非常特殊的布局参数,称为alignWithParentIfMissing

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

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


https://www.crittercism.com/blog/android-performance-tip-1/ - ashish.n

17
通过这个名字,你就可以知道LinearLayout按照你设置的方向垂直或水平地线性添加视图。它会根据设计要求一个接一个地添加视图。而RelativeLayout是将视图相互关联的方式添加,不需要在RelativeLayout中声明方向。
例如,如果您想要添加两个TextView,并且希望它们一个在另一个下面,那么您将先添加第一个TextView,然后通过在XML文件中添加android:layout_below="first textview's id"引用第二个TextView与第一个TextView。这样你就可以处理RelativeLayout了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接