1. 程式人生 > >Android Studio中ConstraintLayout的使用

Android Studio中ConstraintLayout的使用

注意事項:必須在Android Studio的IDE中才有這個編譯器中使用,編譯器版本必須是2.2或更高的版本

一、ConstraintLayout使用時的基本配置

1、步驟一:在Tools–>Android–>SDK Manager開啟這個視窗,選擇到SDK Tools進行安裝ConstraintLayout的sdk

這裡寫圖片描述

這裡寫圖片描述

2、步驟二:在app/build.gradle檔案中進行配置,匯入ConstraintLayout使用的類庫

 compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'

3、步驟三:在建立專案的預設的activity_main.xml將佈局修改成android.support.constraint.ConstraintLayout

這樣,簡單的使用就已經整合完畢

二、ConstraintLayout使用時的基本操作

1、拖一個Button按鈕放入到佈局檔案中,這個時候還沒有任何約束

這裡寫圖片描述

2、我們可以觀看上下左右都有一個小圓圈,我們可以通過拖拽實現新增約束

這裡寫圖片描述

3、我們可以新增讓第二個個button按鈕在第一個button按鈕的下面

這裡寫圖片描述

4、我們新增完成約束後如何進行刪除約束呢
(1)當滑鼠懸停到小圓圈上,小圓圈變成紅色,這個時候我們就可以刪除約束

這裡寫圖片描述

(2)刪除某一控制元件的所有約束,我們首先進行選中當前的控制元件,下面會出現一個刪除約束的圖示。點選該圖示刪除所有的約束。

這裡寫圖片描述

(3)用於刪除當前介面的所有約束,在工具欄中有個刪除約束的圖示
這裡寫圖片描述

三、ConstraintLayout進階的使用
1、Inspector的使用

(1)當我們選中一個控制元件的時候,右面都會出現Properties區域有很多屬性的選擇

這裡寫圖片描述

Properties區域的上半部分是Inspector,我們如圖所示:

這裡寫圖片描述

我們可以觀察到他左右兩邊有一個橫向的軸和一個縱向的軸。可以拖動進行改變控制元件的位置。如圖所示,

這裡寫圖片描述

我們發現位置移動到最右邊,在佈局中存在填充。預設上下左右的填充是16dp.我們可以通過修改值來進行取消填充的操作,如圖所示

這裡寫圖片描述

接下來我們再來學習一下位於Inspector最中間的那個正方形區域,它是用來控制控制元件大小的。一共有三種模式可選,每種模式都使用了一種不同的符號表示,點選符號即可進行切換。

● 表示wrap content,這個我們很熟悉了,不需要進行什麼解釋。

● 表示固定值,也就是給控制元件指定了一個固定的長度或者寬度值。

● 表示any size,它有點類似於match parent,但和match parent並不一樣,是屬於ConstraintLayout中特有的一種大小控制方式,下面我們來重點講解一下。
首先需要說明,在ConstraintLayout中是有match parent的,只不過用的比較少,因為ConstraintLayout的一大特點就是為了解決佈局巢狀,既然沒有了佈局巢狀,那麼match parent也就沒有多大意義了。
而any size就是用於在ConstraintLayout中頂替match parent的,先看一下我們怎樣使用any size實現和match parent同樣的效果吧。比如說我想讓Button的寬度充滿整個佈局,操作如下圖所示。

這裡寫圖片描述

2、Guidelines的使用
(1)使用的需求:我們在介面中有一個登入按鈕和一個註冊按鈕,讓兩個按鈕共同的水平居中。
步驟一:在介面中拖拽兩個按鈕,一個是登入按鈕,另一個是註冊按鈕,如圖所示:
這裡寫圖片描述

步驟二:希望讓這兩個按鈕在水平方向上居中顯示,在垂直方向上都距離底部64dp,那麼就需要先新增一個垂直方向上的Guideline,如下圖所示:

這裡寫圖片描述

我來對上圖中的操作進行一下解釋。首先點選通知欄中的Guidelines圖示可以新增一個垂直或水平方向上的Guideline,這裡我們需要的是垂直方向上的。而Guideline預設是使用的dp尺,我們需要選中Guideline,並點選一下最上面的箭頭圖示將它改成百比分尺,然後將垂直方向上的Guideline調整到50%的位置,這樣就將準備工作做好了。

步驟三:開始實現讓兩個按鈕在水平方向上居中顯示,並距離底部64dp的功能,如下圖所示:

這裡寫圖片描述

3、自動新增約束佈局

不過如果介面中的內容變得複雜起來,給每個控制元件一個個地新增約束也是一件很繁瑣的事情。為此,ConstraintLayout中支援自動新增約束的功能,可以極大程度上簡化那些繁瑣的操作。
自動新增約束的方式主要有兩種,一種叫Autoconnect,一種叫Inference,我們先來看第一種。
想要使用Autoconnect,首先需要在工具欄中將這個功能啟用,預設情況下Autoconnect是不啟用的,如下圖所示。

這裡寫圖片描述

Autoconnect可以根據我們拖放控制元件的狀態自動判斷應該如何新增約束,比如我們將Button放到介面的正中央,那麼它的上下左右都會自動地新增上約束,如下圖所示。

這裡寫圖片描述

然後我們在這個Button的下方再放置一個Button,效果如下。

這裡寫圖片描述

可以看到,只需要將Button拖放到介面上,Autoconnect會判斷我們的意圖,並自動給控制元件新增約束。不過Autoconnect是無法保證百分百準確判斷出我們的意圖的,如果自動新增的約束並不是你想要的話,還可以在任何時候進行手動修改。總之,可以把它當成一個輔助工具,但不能完全靠它去新增控制元件的約束。
以上是Autoconnect的用法,接下來我們看一下Inference的用法。Inference也是用於自動新增約束的,但它比Autoconnect的功能要更為強大,因為AutoConnect只能給當前操作的控制元件自動新增約束,而Inference會給當前介面中的所有元素自動新增約束。因而Inference比較適合用來實現複雜度比較高的介面,它可以一鍵自動生成所有的約束。
下面我們就通過一個例子來演示一下Inference的用法,比如介面上現在有兩個TextView,兩個EditText,和兩個Button,如下圖所示。

這裡寫圖片描述

接下來我們先將各個控制元件按照介面設計的位置進行擺放,擺放完成之後點選一下工具欄上的Infer Constraints按鈕,就能為所有控制元件自動新增約束了,如下圖所示。

這裡寫圖片描述

現在執行一下程式,最終效果如下圖所示:

這裡寫圖片描述

更改文章敬請關注下面的二維碼:

這裡寫圖片描述