我正在尝试"Constraint.Group"
并且我有孩子的观点:A,B,C。
在代码中,"Constraint.Group".visibility = View.Gone
确实有效,但如果我选择A.visibility = View.Gone
,则不会对子视图产生影响。这是正常行为吗?
答案 0 :(得分:6)
看起来群组可见性胜过群组各个视图的可见性。这是有道理的,因为每个视图都定义了一些可见性(gone
,visible
,invisible
),因此,如果尊重单个视图的可见性设置,则该组的完整性将被侵犯。换句话说,我们改变可见性的个人观点本质上不会成为小组的一部分。
答案 1 :(得分:1)
我同意Cheticamp的观点,并想补充说,您必须像他所说的那样分别切换可见性,或者创建一个常规组以更改内部的所有视图,或者创建一个本地组仅更改特定的视图,如下所示:
<ImageView
android:id="@+id/view1"
android:layout_width="0dp"
android:layout_height="0dp"
/>
<ImageView
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="0dp"
/>
<android.support.constraint.Group
android:id="@+id/group1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:constraint_referenced_ids="view1,view2" />
<android.support.constraint.Group
android:id="@+id/group2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="view1" />
将无法更改组内的单个视图的可见性,但是通过这种方式,您可以更改group1可见性或group2可见性。
答案 2 :(得分:0)
看看ConstraintLayout的源代码:
像ConstraintLayout这样的外观会取出其子视图的visibility
和elevation
,并将这些值重新绑定到子视图本身。
因此无法在“组”中为子视图设置可见性。
某些解决方法是将单个视图引用到另一个组(这看起来很棘手,但我仍然可以接受)。
答案 3 :(得分:0)
如果您使用上述 2 个版本的约束布局,则应使用 isGone 属性。
group.isGone = true
但是如果你使用低于2的版本,由于一些错误,它不起作用。