ConstraintLayout(约束布局)是 Android Studio 推荐的布局方式,能够实现灵活的布局,减少控件之间的嵌套,从而优化界面的渲染性能。
官方文档:
以前我们用 LinearLayout、RelativeLayout 等实现的布局,现在用 ConstraintLayout 都可以实现,而且布局更轻巧,更扁平。
举个例子,要实现下面的布局,一个图标和一段文字两者居中对齐,而且文本长度不固定,考虑一下需要怎么做?

以前,我们可能会采用下面这种方式实现,通过嵌套一层 LinearLayout 来包裹要居中的元素,最后实现的效果没有任何问题,但不是最优的方案。

有了 ConstraintLayout 后,一切变得那么简单。不再需要嵌套一层,直接给元素添加约束就可以,二者通过 packed 合为一体,布局更加扁平。

这是 ConstraintLayout 的 ChainStype 属性,LinearLayout 的 layout-weight 属性也包含在其中,还可以指定左右边距的比例,实在是太灵活、太强大了。

除此之外,还有 GuideLine,Barrier,Group,PlaceHolder 等用法,支持相对定位、角度定位、比例尺寸约束等特性,有了 ConstraintLayout 还要啥自行车。
另外,从 Android Studio 的 Layout Editor 界面中可以看出,官方已经不推荐使用 Legacy 里的控件,包括 ListView、GridView、RelativeLayout 等。Layouts 里的 ConstraintLayout、LinearLayout 和 FrameLayout 可以实现绝大多数的布局,列表使用 RecyclerView 就够了。在控件选择上,没有最好的,只有最合适的。


自己是从事了七年开发的Android工程师,不少人私下问我,2019年Android进阶该怎么学,方法有没有?
没错,年初我花了一个多月的时间整理出来的学习资料,希望能帮助那些想进阶提升Android开发,却又不知道怎么进阶学习的朋友。【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
资料获取方式:加入Android架构交流QQ群聊:513088520 ,进群即领取资料!!!
点击链接加入群聊【Android移动架构总群】:加入群聊

网友评论