Как исправить StaggeredGridLayoutManager в RecyclerView при прокрутке, разделяет содержимое и летит случайным образом - PullRequest
0 голосов
/ 30 апреля 2018

Я пытался получить удаленные изображения, которые у меня есть API, и отобразить их в Masonry Grid (Pinterest Style).

Сначала я использовал простой GridView, он работал отлично, но без стиля масонства. Затем, после различных исследований, я наконец использовал:

  1. Fresco для извлечения Image & Cache
  2. RecyclerView с StaggeredGridLayoutManager для отображения изображений из API.
  3. Пользовательский макет с SimpleDraweeView для отображения каждого элемента.
  4. Мой собственный адаптер "MasonryAdapter" для привязки данных к представлению.

В пользовательском макете я устанавливаю SimpleDraweeView с помощью:

layout_with = match_parent
layout_height = wrap_content

Затем в моем адаптере я установил правильное соотношение сторон для каждого изображения, так как в моем API я могу легко получить ширину и высоту изображений.

holder.contentImage.aspectRatio = image.width.toFloat() / image.height.toFloat()

Хотя в первый момент все выглядело приемлемо, но после прокрутки я обнаружил, что все разрывается. Я очень плохо знаком с Android & Kotlin, пожалуйста, спросите, нужно ли вам что-нибудь. Здесь я прилагаю GIF к происходящему.

Preview

Если изображение удалено, проверьте его здесь: https://ibb.co/dy0EjH

1 Ответ

0 голосов
/ 12 августа 2018

Я столкнулся с подобной проблемой, я использовал textview внутри макета Constraint.

Разрыв макета ограничения при использовании в представлении рециркулятора и что решило мою проблему (как упомянуто в комментариях @AutilitaryApps):

Я только что обновил версию макета Constraint (до последней стабильной версии на данный момент) с 1.0.1 до 1.1.1 .

Так что, если вы используете макет Constraint, просто обновите его до последней стабильной версии, и это, возможно, решит вашу проблему!

(см. Скриншоты ниже)

enter image description here

неожиданное поведение

enter image description here

после обновления версии макета ограничения

...