從本篇部落格開始我們開始介紹如何使用ConstraintLayout。 既然ConstraintLayout叫約束佈局,首先我們先介紹什麼叫約束(Constraints):
約束(Constraints)
一個約束表示View之間的"佈局約束"關係,以及約束的位置,類似RelativeLayout的"相對"概念。
編輯器介紹
在工程中我們新建一個佈局activity_main.xml,整個介面如下:

這是一個編輯器整體的介面,下面我們來介紹一些常用的功能:
- 設計/文字檢視

左下角有檢視切換的選項,通過這個選項我們可以切換設計/(程式碼)文字檢視,傳統在開發的過程中可能覺得設計檢視並不常用,但是在使用ConstraintLayout時它確實很強大,反而可能很少用程式碼檢視了。
- 設計/藍圖

這裡我們可以看到左上角的按鈕,這個是用來切換設計介面和藍圖介面的,通常我們需要兩個介面都展示,這樣我們可以更加清晰地看到各個View的約束。
- 裝置與解析度適配

這個功能我們可以切換橫豎屏等UI的模式,這個功能也可以使我們方便的進行各種UI模式的適配。

在這裡我們可以預覽當前佈局在不同的解析度下的效果,這個功能在適配的時候非常方便,這裡提一下下面的Custom選項,這個功能允許我們將當前佈局拖拽成任意的大小:

- 自動約束

這個功能允許編輯器自動進行約束,當我們拖拽一個空間到檢視中後,編輯器會自動為我們建立一個約束,可能很多時候我們並不需要自動約束,我們可以點選把它關閉。
- 約束推斷

這個按鈕類似PS的魔棒,它的功能是進行約束的推斷,如圖我拖拽了兩個按鈕到佈局中,一開始並沒有任何約束,當我點選了這個按鈕後,自動為我生成了如圖的約束。
程式碼檢視
我們切換到程式碼檢視:

此時我們發現介面的哪些約束在程式碼中也僅僅增加了幾行程式碼,用來表示當前的約束,仔細觀察後我們發現其實都是toStartOf,toEndOf,toTopOf...,這些都是指定的當前View與其它View(或Parent)之間的關係,對比一下RelativeLayout,我們很容易就能明白。
如果當前沒有任何約束的時候,我們觀察程式碼:

注意這些tools:xxx,只是表示View在編輯器的絕對位置,是用來我們設計(拖拽)時使用的。如果不新增約束,執行後只是顯示在螢幕的左上角,重疊在一起。
總結
本文我們主要講解了ConstraintLayout編輯器常用功能的使用。這些功能靈活且方便地幫助我們佈局頁面。下一篇:Android開發 - 使用ConstraintLayout(四)建立基本約束我們將介紹使用基本的約束。