上一篇我們介紹了編輯器的基本使用,本文我們介紹建立基本的約束。
"約束"表示View之間的位置關係。當我們在ConstraintLayout佈局中建立View時,如果我們沒有新增任何約束,雖然在設計檢視我們可以拖動它們到任意位置,但是執行後都會在左上角的原點位置,同時程式碼中也會給出警告:

所以我們必須確保我們的View都被新增了適當的約束。 我們常用的約束通常有兩種,一種是相對父View的約束,一種是相對其它View的約束。
相對父佈局的約束
建立相對佈局的約束時比較簡單,將物件方位的錨點拖動到對應方位的佈局上即可。

這裡我將這個按鈕放到左上角,距父佈局的左方和上方為50dp,在紅色方框處可以調整具體的數值。
相對其它佈局的約束
建立相對其它View的佈局的形式就比較多樣化了,結合相對父佈局的約束,可以實現出非常複雜的介面。
當建立一個相對其它View的約束時,將錨點拖動到其它View上面的錨點即可。

建立父View約束時將錨點拖到父View邊緣即可,建立與其它View約束時是將錨點拖到其它View的錨點上。
我們來舉個應用的例子:
比如我們想要一個View相對另一個View居中顯示,使用ConstraintLayout來實現就非常簡單:

我們只需要將一個View(上圖中的TextView)的左邊錨點拖到目標View(上圖中的Button)的左側錨點,右邊的錨點拖動到目標View的右側錨點即可以實現。
總結
以前使用傳統佈局時基本上不願意使用設計檢視,佈局時也基本上靠碼程式碼。但是使用了ConstraintLayout後反而很少使用程式碼檢視了,因為只需拖拖拽拽就可建立約束,實現複雜的佈局,效率也相應地大大提升了。 下一篇:Android開發 - 使用ConstraintLayout(五)偏差(Bias)我們介紹偏差(Bias)的使用。