ConstraintLayout(約束布局)是 Android Studio 推薦的布局方式浓领,能夠?qū)崿F(xiàn)靈活的布局臂港,減少控件之間的嵌套堰汉,從而優(yōu)化界面的渲染性能巷嚣。
官方文檔:
以前我們用 LinearLayout垂蜗、RelativeLayout 等實(shí)現(xiàn)的布局楷扬,現(xiàn)在用 ConstraintLayout 都可以實(shí)現(xiàn)解幽,而且布局更輕巧,更扁平毅否。
舉個(gè)例子亚铁,要實(shí)現(xiàn)下面的布局,一個(gè)圖標(biāo)和一段文字兩者居中對(duì)齊螟加,而且文本長(zhǎng)度不固定徘溢,考慮一下需要怎么做?
以前捆探,我們可能會(huì)采用下面這種方式實(shí)現(xiàn)然爆,通過嵌套一層 LinearLayout 來包裹要居中的元素,最后實(shí)現(xiàn)的效果沒有任何問題黍图,但不是最優(yōu)的方案曾雕。
有了 ConstraintLayout 后,一切變得那么簡(jiǎn)單助被。不再需要嵌套一層剖张,直接給元素添加約束就可以,二者通過 packed 合為一體揩环,布局更加扁平搔弄。
這是 ConstraintLayout 的 ChainStype 屬性,LinearLayout 的 layout-weight 屬性也包含在其中丰滑,還可以指定左右邊距的比例顾犹,實(shí)在是太靈活、太強(qiáng)大了褒墨。
除此之外炫刷,還有 GuideLine,Barrier郁妈,Group浑玛,PlaceHolder 等用法,支持相對(duì)定位噩咪、角度定位锄奢、比例尺寸約束等特性,有了 ConstraintLayout 還要啥自行車剧腻。
另外,從 Android Studio 的 Layout Editor 界面中可以看出涂屁,官方已經(jīng)不推薦使用 Legacy 里的控件书在,包括 ListView、GridView拆又、RelativeLayout 等儒旬。Layouts 里的 ConstraintLayout栏账、LinearLayout 和 FrameLayout 可以實(shí)現(xiàn)絕大多數(shù)的布局,列表使用 RecyclerView 就夠了栈源。在控件選擇上挡爵,沒有最好的,只有最合適的甚垦。
如果想了解更多茶鹃,推薦這篇文章:約束布局ConstraintLayout看這一篇就夠了