ConstraintLayout
设置为GONE
时, VISIBLE
间歇性地无法正确布局:
<android.support.constraint.ConstraintLayout
android:id="@+id/constraint_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/text1"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
override fun onResume() {
super.onResume()
text1.text = ""
text1.visibility = View.GONE
text2.text = ""
text2.visibility = View.GONE
text1.postDelayed({
text1.text = "Hello"
text1.visibility = View.VISIBLE
text2.text = "World"
text2.visibility = View.VISIBLE
}, 100
)
}
检测TextView
类会显示TextView
实例已正确测量,但布局时宽度设置为0。
我想知道ConstraintLayout
LinearSystem
是否是非确定性的。是否存在迭代在未定义迭代顺序的地图? (我和Cassowary见过这个)
答案 0 :(得分:0)
我希望你在github page中的陈述:
在恢复活动后不久,当视图从 GONE 设置为 VISIBLE 时,ConstraintLayout 会间歇性地无法正确布局
我检查了你的项目,并将100毫秒更改为1000毫秒。 这是输出:
在我看来,您希望在执行textview.setVisibility(View.GONE)
的那一刻,您希望视图不可见。这不是android的工作方式。您只是将事件发布到MessageQueue
稍后将由Looper
处理的事件,而这100毫秒还不足以让人眼看到这些变化发生。
答案 1 :(得分:0)
这是constraint-layout:1.1.0-beta2
https://issuetracker.google.com/issues/65613481