首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConstraintLayout与“传统”布局

ConstraintLayout与“传统”布局
EN

Stack Overflow用户
提问于 2017-06-10 21:39:49
回答 4查看 17.1K关注 0票数 25

我只是想知道什么时候应该选择CoordinatorLayout而不是“传统”布局,或者它们(或者至少是其中的一些)会被废弃吗?

ConstraintLayout vs CoordinatorLayout的问题已经告诉我,CoordinatorLayout仍然有其存在的权利。我想,当只有一个子视图时,FrameLayout仍然是一个比ConstraintLayout更好的选择。

,但是其他的布局呢?

我个人非常习惯用xml手工编写布局,所以向ConstraintLayout转换对我来说非常困难。此外,对这些问题的回答将使我真正感兴趣:

,ConstraintLayout比嵌套布局有更好的性能吗?如果是这样的话,在什么时候会发生这种情况(嵌套的级别)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-10 23:05:27

我只是想知道什么时候应该选择CoordinatorLayout而不是“传统”布局,或者它们(或者至少是其中的一些)会被废弃吗?

因此,ConstraintLayout是有用的,但(目前)它并不是安卓应用程序开发所需要的,就像LinearLayoutRelativeLayout一样。而且,由于ConstraintLayout是一个库,您需要采取一些额外的步骤将其添加到您的项目中(模块的build.gradle文件的依赖项闭包中的com.android.support.constraint:constraint-layout工件),并且它为您的安卓应用程序的大小增加了大约100‘s。

我个人非常习惯用xml手工编写布局,所以向ConstraintLayout转换对我来说非常困难。

拖放GUI生成器

谷歌正在努力让开发者的生活更轻松,让他们工作得更快、更有效率,所以他们继续改进拖拽式GUI构建器。不管拖放手势如何,开发人员只是提供小部件的X/Y坐标,这是基于开发人员释放鼠标按钮并完成拖放的位置。有了LinearLayout,添加小部件很容易。使用RelativeLayout很难让get处理拖放,您可能必须深入到XML代码中才能完成任务。创建ConstraintLayout时考虑了GUI的构建,这样就可以更容易地根据开发人员丢弃小部件的位置推断出正确的规则。

重新计算尺寸和位置

更改小部件的详细信息通常导致不得不重新计算大小。例如,TextView中的nne更改可能会导致整个层次结构通过调整大小/重新定位工作。如果容器内有容器,而容器在另一个容器内等等,则意味着父母可以重新调整其子女的大小/重新定位,这对于深层次结构来说是非常昂贵的。所以

ConstraintLayout比嵌套布局具有更好的性能吗?

是的,ConstraintLayout的设计考虑到了性能,试图消除尽可能多的pass场景,并试图消除对深度嵌套的视图层次结构的需求。

哈,

要了解更多信息,您可以在一本来自CommonsWare.的关于android开发的书中查看。通过与其他容器(如LinearLayoutRelativeLayout等)的比较,更详细地解释了使用LinearLayout的情况。

票数 17
EN

Stack Overflow用户

发布于 2017-11-08 12:39:41

我想,当只有一个子视图时,FrameLayout仍然是一个比ConstraintLayout更好的选择。

我认为,当您超越简单的布局时,ConstraintLayout的威力就会发生。我认为目标(至少对我来说)是尽可能平复你的复杂布局。通过使用ConstraintLayout的全套帮助,如不可见的约束视图(如GuidelineBarrier ),使用layout_constraintVertical_chainStyle指定垂直/水平的layout_constraintVertical_bias和视图发行版。

如果您有一个具有嵌套ViewGroup的复杂视图,则开始使用ConstraintLayout

我个人非常习惯用xml手工编写布局,所以向ConstraintLayout转换对我来说非常困难。

对我来说也是如此。我过去常常手工编写布局xml文件,现在仍然使用ConstraintLayout。编辑器有了很大的改进,我使用它主要是为了确保约束看起来正确。有一些准备时间可以用来习惯手工编写xml,但是一旦您开始编写xml,我比编辑器更有信心添加一些您可能不知道的内容。

使用ConstraintLayout:的另一个原因是使用ConstraintSet来实现动画而不需要太多的手工编码。一些很好的例子:https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3

票数 6
EN

Stack Overflow用户

发布于 2017-06-10 21:54:27

您可以继续使用其他布局来处理简单的事情(如果它们不被推荐的话),但是ConstraintLayout比RelativeLayout更快、更聪明,而且性能更好。

您可以检查这个answer,它讨论了ConstraintLayout和RelativeLayout之间的差异。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44478325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档