每当我需要 View 容器时,我总是使用relativelayout,因为它很灵活,即使我只是想显示一些非常简单的东西。

这样做可以吗?或者从性能/良好实践的角度来看,我应该在可以的情况下尝试使用 LinearLayout 吗?

谢谢!

有帮助吗?

解决方案

在在谷歌我谈话/ O 2013(编写自定义视图用于Android系统),罗曼盖伊澄清误解导致大家开始使用RelativeLayouts的一切。一个RelativeLayout的总是做两张措施通行证。整体而言,只要你的视图层次是简单的可以忽略不计。但是,如果您的层次结构是复杂的,做了额外的传球可能是相当昂贵的。此外,如果你巢RelativeLayouts,你会得到一个指数测量算法。

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

其他提示

除非你铺设大量视图(例如,在一个ListView)的,或的LinearLayout之间RelativeLayout的选择的性能是可以忽略不计。无论选择哪种是最方便使用的工作,担心性能,只有当你需要。

这就是关于官方文档建立高效的布局说,大约RelativeLayout的和的LinearLayout的性能:

  

坚持的基本特征是   不幸的是不是最有效的   方法来创建用户界面。一种   常见的例子是滥用   LinearLayout中,这导致   的视图在视图中增殖   层次结构。每个视图 - 或者更糟,   每一个布局管理器 - 您添加到   您的应用程序是有代价的:   初始化,布局和绘图   变慢。布局通可   尤其是昂贵的,当你窝   几个LinearLayout中使用的   权重参数,这就要求   子被测量两次。

2018 年更新: 在 Android N 版本中, ConstraintLayout 类提供类似的功能 RelativeLayout, ,但成本显着降低。它是非常强大的布局管理器,每当需要构建复杂的 GUI 时都应该使用它。

您可以尝试

<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为100%,比RelativeLayout的以往更好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top