我是今年初才開始用ConstraintLayout 的新手,
覺得 ConstraintLayout 使用蠻直覺的,
不過都是直接在 xml 排位置,
在 Design 界面拖有時候會搞不定,
特別像是要製作 Chain 的時候。
會先在 Design 拖要用的元件,
之後再手動加上設定位置,像是
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_view1"
遇到幾個問題,
像是 match_parent 無效。
參考文件1有寫到
在設定 android:layout_width 和 android:layout_height 時,
不能使用 match_parent,只能使用 wrap_content 和指定尺寸。
如果要有 match_parent 的效果,
可以設定
android:layout_width="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
比較特別的地方是製作 Chain
可以產生類似 LinearLayout 的串列
像是 A-B-C
主要就是每個物件中間都要有雙方互連
A:
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/B"
B:
app:layout_constraintLeft_toRightOf="@+id/A"
app:layout_constraintRight_toLeftOf="@+id/C"
C:
app:layout_constraintLeft_toRightOf="@+id/B"
app:layout_constraintRight+toRightOf="parent"
排列的效果可以用 chainStyle 控制
app:layout_constrainHorizontal_chainStyle="packed"
分佈同樣可以用 weight 控制
layout_constraintHorizontal_weight
使用Chain 後就可以省掉在layout 內再使用 LinearLayout。
目前覺得比較不方便的點是如果已經有設定很多個相關位置的物件,
要改前面的物件還要順便改有用到這個物件來定位的部份。
還有 include 還沒試過。
參考文件1:
https://developer.android.com/training/constraint-layout/index.html
參考文件2:
https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html
縮: http://tinyurl.com/n26er43