У меня проблемы с просмотром, который не обновляется в MotionLayout
.
Похоже, что в какой-то момент механизм обновления / перерисовки MotionLayout
выходит из строя, и подпредставления (включая вложенные) имеют случайные проблемы с обновлением себя на экране. То, что я испытал до сих пор:
RecyclerView
иногда не обновляется. Это происходит, когда новые данные доступны, я использую библиотеку Paging для заполнения данных. Я исправил это с обходом прокрутки на 1 пиксель, когда получил новые данные - recyclerView.smoothScrollBy(0,1)
. После этого RecyclerView
начинает прекрасно перерисовываться. - Когда клавиатура открыта, она случайно теряет вложенную перерисовку подпредставления. В github есть проблема , где парень воспроизводит все это, добавляя
EditText
к официальным MotionLayout
примерам. Некоторые примеры проблем, с которыми я сталкиваюсь: - Я использую
TextInputLayout
с app:endIconMode="clear_text"
в MotionLayout -> ConstraintLayout -> TextInputLayout
, и кнопка X
иногда не отображается, когда я начинаю печатать (также после закрытия клавиатуры). TextView
перерисован частично! Я показываю "No Results"
или "No Posts"
текст в TextView
, переключаясь между ними в зависимости от логики c, но вместо обновления всего текста в интерфейсе отображается только "No"
. Я его отладил, Layout Inspector говорит, что все в порядке, значение текстового представления равно "No Results"
, но я не вижу его на экране. - Некоторые другие анимации не работают, например, неопределенная анимация прогресса вложенных
SwipeRefreshLayout
ВАЖНО: Все проблемы обновления / перерисовки исправлены, когда я делаю переход! Когда я прихожу в какое-то запутанное состояние, когда 3 вложенных подпредставления заморожены / частично прорисованы, мне просто нужно нажать кнопку, которая запускает мой переход, и все они радостно перерисовывают себя!
Пожалуйста, дайте мне знать, если это известная проблема, и если есть обходной путь для этого. Я мог бы сделать невидимый переход в 1 пиксель, может быть, но я даже не могу определить, когда обновление MotionLayout
прерывается, обработка клавиатуры и новых данных RecyclerView
, кажется, не покрывает все случаи. В противном случае мне придется вернуться к ConstraintLayout
и подумать о реализации потрясающей функциональности OnSwipe
самостоятельно (если это возможно даже в ConstraintLayout
).