无法设置约束组的可见性
当我尝试在按钮单击上设置组的可见性时,它不会影响视图的可见性。使用com.android.support.constraint:constraint-layout:1.1.0 -beta4。我已经尝试过将它设置为元素明智而没有问题,但是没有成功。无法设置约束组的可见性
我MainActivity.kt
private fun toggleLoginUI(show: Boolean) { if (show) {
group.visibility = VISIBLE
} else {
group.visibility = INVISIBLE
}
}
fun onClick(view: View) {
when (view.id) {
R.id.button -> toggleLoginUI(true)
R.id.button4 -> toggleLoginUI(false)
}
}
我activity_main.xml中
<android.support.constraint.ConstraintLayout.. <TextView
android:id="@+id/textView"
... />
<TextView
android:id="@+id/textView2"
... />
<Button
android:id="@+id/button"
.../>
<Button
android:id="@+id/button4"
... />
<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="textView,textView2" />
</android.support.constraint.ConstraintLayout>
回答:
这看起来像是一个bug。 GONE
作品,但INVISIBLE
不,我认为它应该。除非有人可以在我的思维错误的地方发帖,否则可能值得一个错误报告。 (我正在使用constraint-layout:1.1.0-beta4
。)
与此同时,这里是一个解决方法,显式检索组中的ID并设置每个检索视图的可见性。
在MainActivity.kt
private fun toggleLoginUI(show: Boolean) { if (show) {
setGroupVisibility(mLayout, group, Group.VISIBLE)
} else {
setGroupVisibility(mLayout, group, Group.INVISIBLE)
}
}
private fun setGroupVisibility(layout: ConstraintLayout, group: Group, visibility: Int) {
val refIds = group.referencedIds
for (id in refIds) {
layout.findViewById<View>(id).visibility = visibility
}
}
mLayout
是ConstraintLayout
。
更新:这里是另一个变通,它利用的事实,改变/从GONE
按预期工作的优势:
private fun toggleLoginUI(show: Boolean) { if (show) {
group.visibility = GONE
group.visibility = VISIBLE
} else {
group.visibility = GONE
group.visibility = INVISIBLE
}
}
回答:
只需添加后续行,你可以改变它。 所以它可见。
group.visibility=ConstraintLayout.GONE
以上是 无法设置约束组的可见性 的全部内容, 来源链接: utcz.com/qa/262094.html