为什么要选择约束布局而不是相对布局?

35

为什么在一个空的Android活动默认布局文件中,RelativeLayout 被替换成了 ConstraintLayout?我需要知道为什么我们应该使用 ConstraintLayout,它还能给我们提供哪些其他好处。


44
因为它是新的。而新的事物会发光。 - Tim
3
它本质上是一个更好的“RelativeLayout”。它可以做许多RelativeLayout不能做的事情,而且性能要好得多。 - Xaver Kapeller
当然,使用它非常愉快。您可以简化布局,就像使用RelativeLayout从未做过的那样。我鼓励任何人尝试一下,它很棒。当然不要使用图形编辑器,它们总是糟糕的。直接编辑XML以充分利用您的布局。 - Xaver Kapeller
一个空的Activity?为什么你会在一个Activity中只有一个RelativeLayout?我猜你是在那里附加一个Fragment?不要使用RelativeLayout...改用FrameLayout。性能更好,特别是当它在代码层次结构中很高时。 - Xaver Kapeller
6
@XaverKapeller,你能给我举个例子来阐明这个说法吗?ConstraintLayout可以做许多RelativeLayout无法做到的事情 - user6685522
1个回答

27

根据Xaver Kapeller的说法,“ConstraintLayout的主要目的是解决RelativeLayout的问题,并且做得非常好。您可以做很多以前无法使用RelativeLayout实现的事情。而且,您可以简化布局,就像以前从未做过的那样。此外,它还修复了RelativeLayout长期存在的性能问题,即在测量/布局阶段的双重计算。因此,我们可以获得更好的性能、更多的灵活性和更简单的布局,所有这些都包含在一个不错的包中。”

使用ConstraintLayout的另一个好处是,它允许你使用拖放式编辑器以类似于Xcode中的Interface Builder方式直观地创建布局,从而避免了RelativeLayout不能实现的问题。

ConstraintLayout:这个新的布局管理器是你的应用程序的一个灵活的布局管理器,允许你创建动态的用户界面,而无需嵌套多个布局。它作为一个支持库分发,与Android Studio紧密耦合,并向后兼容到API Level 9。

乍一看,ConstraintLayout与RelativeLayout相似。 然而,ConstraintLayout是专为Studio设计的, 它可以有效地表达您的应用程序设计, 从而使您依赖更少的布局,如LinearLayout、FrameLayout、TableLayout或GridLayout。 最后,借助内置的自动约束推断引擎, 您可以自由地根据自己的喜好设计UI,让Android Studio去完成繁重的工作。


3
你能给我一个例子吗?相对布局在哪些情况下失败或需要比 ConstraintLayout 更多的时间/代码? - user6685522
1
我更喜欢这个答案,而不是链接问题中的答案,因为它强调了ConstraintLayout比RelativeLayout更优越,而不仅仅是另一种风格。 - AnthonyW
似乎你可以使用ConstraintLayout来完成几乎所有的事情,而不需要其他任何东西? - CodeMonkey

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