ConstraintLayout (約束佈局) 是 Android 最新推出的佈局元件, 它和
RelativeLayout 類似, 都是利用元件與元件之間的相對關係來設計佈局,
但具備了更多的彈性而且更容易使用。
其特色是可以用扁平(單層)的結構來設計複雜的版面, 而不像 LinearLayout 必須垂直、水平套疊好幾層, 因此可以提升執行時的佈局及存取效率。
ConstraintLayout 最低可向前相容到 Android 2.3 版 (API9), 而開發工具則是從 Android Studio 2.2 版才開始支援。
ConstraintLayout 的運作原理
英文 Constraint 就是『約束』(或限制) 的意思, 而我們在 ContraintLayout 中, 也就是要在元件的上、下、左、右方向設置約束, 來安排元件的位置及大小。
基本上, 約束就是要定義元件『在某方向與其他元件(包括外層容器)的對齊或距離關係』, 因此每個元件至少要設定 2 個約束 (在水平與垂直方向各 1 個) 才能控制其位置, 不過通常都會設定更多的約束, 讓元件可以依不同狀況而調整其顯示位置與大小。例如:
請注意!如果元件在水平或垂直方向未設定約束, 那麼雖然在設計時元件會顯示在我們擺放的位置 (以方便我們操作), 但在執行時則會因沒有約束而向外層容器 (ConstraintLayout) 的左邊界、上邊界靠齊。例如上圖右邊的按鈕因未設定水平方向的約束, 在執行時會顯示如右:
當元件在水平或垂直方向未設定約束時,
雖然仍可正常建構、執行, 但佈局編輯器會將之視為錯誤 (因為執行時位置會跑掉), 按一下編輯器右上角的
5 即可看到相關錯誤訊息。
.......﹝詳細內容﹞
更多內容請見
《 Android App 程式設計教本之無痛起步- 使用 Android Studio 2.X 開發環境 》
|