LinearLayout与RelativeLayout [关闭]


71

RelativeLayoutoverLinearLayout在android中有什么优势?对于特定的设计,您希望使用哪种设计?其背后的原因是什么?

它是(RelativeLayout)可比的还是类似HTML的<div>


3
如果您在Google上搜索问题代码LinearLayout与RelativeLayout,效果会更好。
user370305'7

+1,并且在本文中有一个很好的答案:何时使用LinearLayout与RelativeLayout
scatmoi13年

Answers:


46

阅读这篇文章

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

在RelativeLayout中,视图与其父视图,RelativeLayout本身或其他视图对齐。例如,我们声明描述与RelativeLayout的底部对齐,标题位于描述上方,并锚定在父级的顶部。有了GONE描述,RelativeLayout不知道标题底边的位置。要解决此问题,可以使用一个非常特殊的布局参数alignWithParentIfMissing

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

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



17

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

例如,您要在两个字母之间添加两个TextView字母,因此您将首先添加一个XML ,然后通过添加XML文件TextView将第二个字母与另一个字母TextView一起引用。这样您可以处理。TextViewandroid:layout_below="first textview's id"RelativeLayout

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.