Group

constraint-layout 1.1 版加入

这个控件也是一个虚拟的辅助控件,并不可见,用于控制一组视图的可见性。

在控制一系列视图的可见性的问题上,我们可能会写出这样的代码(当然还可以使用 ButterKnife,但我们还是要维持一个数组):

View view1 = ...;
View view2 = ...;
...
View viewN = ...;

view1.setVisibility(View.GONE);
view2.setVisibility(View.GONE);
...
viewN.setVisibility(View.GONE);

在使用 ConstraintLayout 之后,为了让布局更加的扁平,这种问题可能会更加严重。

有了 Group 这个控件这个问题就得到了解决,通过它我们就可以控制一组视图的可见性。

如何进行关联?可以通过如下方式:

  • 在 xml 中直接修改 app:constraint_referenced_ids 属性,属性值为需要关联的视图的 id ,多个用逗号分隔
  • 在 Layout Editor 的 Component Tree 下将需要关联的视图拖拽到 group 上,拖拽后在 xml 中自动生成相关属性代码

在代码中,只要设置 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="view1,view2,...,viewN" />

在代码中:

Group group = findViewById(R.id.group);
group.setVisibility(View.GONE);

问题(1.1.0-beta3)

Group 设置可见,关联视图设置不可见无效。

Group 设置不可见,关联视图设置可见无效。

Group 有时会莫名其妙的消失?

评论