每次我需要一个View容器时,我一直在使用RelativeLayout,因为它具有灵活性,即使我只是想显示一些非常简单的东西。
是否可以这样做,或者我应该从性能/良好实践的角度尝试使用LinearLayout?
谢谢!
答案 0 :(得分:144)
在Google I / O 2013(为Android编写自定义视图)的演讲中,Romain Guy澄清了导致每个人开始使用RelativeLayouts的误解。 RelativeLayout总是必须进行两次测量。总的来说,只要您的视图层次结构很简单,它就可以忽略不计。但是,如果您的层次结构很复杂,那么进行额外的度量传递可能会相当昂贵。此外,如果您嵌套RelativeLayouts,您将获得指数测量算法。
答案 1 :(得分:51)
除非您正在布置大量视图(例如在ListView中),否则在LinearLayout或RelativeLayout之间进行选择的性能可以忽略不计。选择最适合工作的方式,只在需要时担心性能。
以下是Creating Efficient Layouts关于RelativeLayout和LinearLayout性能的官方文档:
坚持基本功能是 不幸的是,效率最高 创建用户界面的方法。一个 常见的例子是滥用 LinearLayout,导致a 视图中的视图泛滥 层次结构。每个观点 - 或更糟, 每个布局管理器 - 您添加到 您的申请需要付费: 初始化,布局和绘图 慢一点布局传递可以是 你筑巢时特别贵 几个使用的LinearLayout 重量参数,需要 孩子要两次测量。
答案 2 :(得分:2)
Relativelayout比Linearlayout更有效。
来自here:
使用基本布局结构导致最有效的布局是一种常见的误解。但是,您添加到应用程序的每个窗口小部件和布局都需要初始化,布局和绘图。例如,使用LinearLayout的嵌套实例可能会导致视图层次结构过深。此外,嵌套使用layout_weight参数的多个LinearLayout实例可能特别昂贵,因为每个子项需要测量两次。当布局反复膨胀时,这一点尤其重要,例如在ListView或GridView中使用时。
答案 3 :(得分:0)
2018更新:在Android的N版本中,ConstraintLayout
类提供与RelativeLayout
类似的功能,但成本却低得多。它是非常强大的布局管理器,只要需要构建复杂的GUI,就应该使用它。
答案 4 :(得分:-20)
你可以尝试
<LinearLayout>
<ViewPager/><!--Loading images from net, it is very good as a testing case.-->
<ViewPagerIndicator/>
<TextView/> <!--Show some info about page-->
</LinearLayout>
<RelativeLayout>
<ViewPager/><!--Loading images from net, it is very good as a testing case.-->
<ViewPagerIndicator below="id of ViewPager"/>
<TextView below="id of ViewPagerIndicator"/> <!--Show some info about page-->
</RelativeLayout>
如果您的网页从互联网上加载了一些图片,您会发现有很多不同之处。在这种情况下,LinearLayout比RelativeLayout好100%。