Android里的ConstraintLayout是個非常強(qiáng)大的工具,它有效的解決了Android里L(fēng)ayout的層級嵌套的問題。使用一個ConstraintLayout可以實(shí)現(xiàn)之前多個Layout才能實(shí)現(xiàn)的效果。
本篇文章就介紹下ConstraintLayout里比較進(jìn)階用法之一:Group。
在我們的日常開發(fā)中,經(jīng)常遇到這種場景:幾個控件需要同時消失或者出現(xiàn)。在沒有ConstraintLayout的時代,這個操作很容易:因?yàn)檫@些控件一般都在一個父ViewGroup里,所以只要把這個ViewGroup設(shè)置消失或出現(xiàn)即可。
但是,當(dāng)我們引入了ConstraintLayout之后,因?yàn)橄藢蛹壡短祝械目丶肌捌綌偂痹谧鳛閞oot的ConstraintLayout下面了。在這種情況下,要方便的同時操作幾個控件,似乎比以前麻煩了。
Group就是為了解決這個問題而誕生的。
Group示例
首先,我們定義2個控件:
<Button
android:id="@+id/btn_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="200dp"
android:layout_marginLeft="30dp"
android:text="這是控件A"/>
<Button
android:id="@+id/btn_b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/btn_a"
app:layout_constraintTop_toBottomOf="@id/btn_a"
android:layout_marginTop="30dp"
android:text="這是控件B"/>
然后,我們定義一個Group:
<android.support.constraint.Group
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:constraint_referenced_ids="btn_a,btn_b"/>
通過app:constraint_referenced_ids="btn_a,btn_b"
這句,讓group把btn_a和btn_b兩個控件包含進(jìn)來。注意,雖然Group也是一個控件,但是在UI上是看不見的。
接下來,我們可以通過操作這個Group來同時操作btn_a和btn_b兩個控件:
findViewById(R.id.group).setVisibility(View.GONE);
上面這行代碼可以把btn_a和btn_b同時設(shè)置為View.Gone。
注意:一個控件可以屬于多個Group,這是允許的。此時,這個控件的屬性由xml里最后一個包含它的Group決定。
以上就是對ConstraintLayout里Group的介紹,希望可以幫到你。