我在ConstraintLayout
内有很多视图,可以根据需要“隐藏/显示”它们,将它们全部放在Group
内,并使用以下方法控制组的可见性:
Group g = findViewById(R.id.mygroup)
g.setVisibility(shouldShowGroup() ? View.VISIBLE : View.GONE)
在这个小组中,有一个Spinner
需要与其他小组分开控制,其可见性似乎已被该小组的小组所覆盖;如果将微调器添加到组中,则下面的代码将不起作用;
Spinner spn = findViewById(R.id.my_spinner)
spn.setVisibility(shouldShowSpinner() ? View.VISIBLE : View.GONE);
部分布局:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/md_keylines"
android:layout_marginTop="@dimen/md_separator"
android:layout_marginEnd="@dimen/md_keylines"
android:background="@drawable/stroke_box_no_padding">
... bunch of views
<Spinner
android:id="@+id/spinner"
style="@style/Biox.Spinner.Vermelho"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/md_separator"
android:layout_marginEnd="@dimen/md_separator"
app:layout_constraintEnd_toStartOf="@id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner_label" />
... more views
<android.support.constraint.Group
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="
view1,
view2,
...,
spinner_label,
spinner"/>
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent=".5" />
</android.support.constraint.ConstraintLayout>