在安卓开发中,
RelativeLayout
相对于 LinearLayout
有哪些优势?在特定设计中你会选择哪个并说明原因?
RelativeLayout
是否与 HTML 的 <div>
有类似之处?RelativeLayout
相对于 LinearLayout
有哪些优势?在特定设计中你会选择哪个并说明原因?
RelativeLayout
是否与 HTML 的 <div>
有类似之处?阅读这篇文章:
Android UI工具包提供了几个布局管理器,它们相当容易使用,大多数情况下,您只需要这些布局管理器的基本功能来实现用户界面。遗憾的是,坚持使用基本功能不是创建用户界面最有效的方法。常见的例子是滥用LinearLayout,这导致视图层次结构中的视图呈指数级增长。您添加到应用程序中的每个视图,或更糟糕的是每个布局管理器,都有代价:初始化、布局和绘制都会变得更慢。当您嵌套若干个使用weight参数的LinearLayout时,布局过程可能尤其昂贵,因为每个孩子都要测量两次...
在RelativeLayout中,视图要么与其父视图即RelativeLayout自身对齐,要么与其他视图对齐。例如,我们声明描述与RelativeLayout底部对齐,并将标题定位在描述上方并锚定到父项的顶部。如果将描述设置为GONE,则RelativeLayout不知道如何定位标题的底部边缘。要解决此问题,可以使用一个非常特殊的布局参数,称为alignWithParentIfMissing。
这个布尔参数只是告诉RelativeLayout在约束目标缺失时使用自己的边缘作为锚点。例如,如果您将一个视图定位在一个GONE视图的右侧,并将alignWithParentIfMissing设置为true,则RelativeLayout将锚定该视图的左侧边缘。在我们的例子中,使用alignWithParentIfMissing将导致RelativeLayout将标题底部与其自身底部对齐。
...当您在ListView中为每个项目使用这样的布局时,差异会更加重要...
LinearLayout
按照你设置的方向垂直或水平地线性添加视图。它会根据设计要求一个接一个地添加视图。而RelativeLayout
是将视图相互关联的方式添加,不需要在RelativeLayout
中声明方向。TextView
,并且希望它们一个在另一个下面,那么您将先添加第一个TextView
,然后通过在XML文件中添加android:layout_below="first textview's id"
引用第二个TextView
与第一个TextView
。这样你就可以处理RelativeLayout
了。