1. 程式人生 > >Android 約束者佈局

Android 約束者佈局

一.介紹約束佈局:

ConstraintLayout 是一個 ViewGroup,它的出現是為了解決複雜佈局時,佈局巢狀(佈局內的佈局)過多的問題(巢狀佈局會增加繪製介面所需的時間)。它可以根據同級檢視和父佈局的約束條件為每個檢視定義位置,類似於 RelativeLayout 所有檢視都是根據兄弟檢視和父級佈局之間的關係來佈局的,但是與 RelativeLayout 相比,它更加靈活,更易於使用。

在 Android 2.2 的版本中,為了給 ConstraintLayout 提供支援,Android 設計了新的佈局編輯器。我們可以直接在佈局編輯器當中拖動控制元件、新增約束。在佈局編輯器當中所做的操作,XML 佈局當中也會自動生成對應的屬性。

其中自動生成的一些屬性,有可能並不是必須需要的。所以在自動生成屬性後,我們還需要手動檢查、清理一下我們不需要的屬性。或者我們也可以直接在 XML 中編寫屬性,ConstraintLayout 的屬性雖多,但是都是成組的,這也是比較方便的一點。

 

二 .使用約束佈局:

如果我們要在專案中使用 ConstraintLayout,我們需要在 build.gradle 中新增依賴(新版 AndroidStudio 會預設新增):compile 'com.android.support.constraint:constraint-layout:1.0.2'

三 .約束概述:

要在 ConstraintLayout 中定義 View 的位置,必須為該 View 新增至少一個水平和垂直約束(否則該 View 就會在左上角繪製)。該約束物件可以是另一個檢視,或者父佈局(也就是 ConstraintLayout),或者是不可見的 Guideline (後面會講 Guideling)等。

如果有缺少的約束(或其他的一些優化問題),編輯器會在右上角顯示警告提示(編譯器不會錯誤);

四.自動新增約束的兩種方式

1.Autoconnect:這是一個獨立的功能,預設是關閉的。我們可以開啟它,開啟後,它將自動為新新增的檢視建立兩個或者更多的約束。

2.Infer Constraints:為當前所有的檢視自動新增約束