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)
Я ищу ваше заявление на странице github :
ConstraintLayout периодически перестает правильно компоноваться, когда представление устанавливается с GONE на VISIBLE вскоре после возобновления активности
Я проверил ваш проект и изменил 100 мс на 1000 мс. Вот результат:
Мне кажется, что вы ожидаете, что в тот момент, когда вы выполняете textview.setVisibility(View.GONE)
вы ожидаете, что представление не будет видно. Это не так, как работает андроид. Вы просто отправляете событие MessageQueue
, которое будет обрабатываться позже Looper
, и этого 100 мс недостаточно для человеческого глаза, чтобы увидеть, что эти изменения происходят.
Это была ошибка в ConstraintLayout, зафиксированная в constraint-layout:1.1.0-beta2
https://issuetracker.google.com/issues/65613481