Прокрутка чата (вид переработчика) не плавная из-за загрузки изображения переменного размера? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь создать приложение для чата. Где у меня разные макеты для получения сообщений и отправки сообщений. Я не могу получить плавную прокрутку, возможно, из-за переменного размера изображения? Я думаю, что эта проблема связана с макетом, который я сделал для окна сообщения чата.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools"
        android:layout_marginTop="11dp"
        android:layout_marginRight="16dp"
        android:gravity="right"
>


        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/tv_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingHorizontal="11dp"
            android:paddingVertical="9dp"
            android:visibility="gone"
            tools:text="fdsfdsfsdfs"
            tools:visibility="gone"
            android:textColor="#2A2617"
            android:textSize="15dp"
            android:fontFamily="@font/nunito_regular"
        />

        <android.support.v7.widget.AppCompatImageView
                android:id="@+id/iv_message"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_below="@+id/tv_message"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                android:padding="11dp"
                android:visibility="gone" />


</RelativeLayout>

Мигает при прокрутке вверх. Код видового держателя выглядит следующим образом

when(data.messageType){
     Constant.MessageType.TEXT ->{
          messageIv.visibility = View.GONE
          messageTv.apply {
              visibility = View.VISIBLE
              text = data.content
          }
     }
     Constant.MessageType.IMAGE -> {
          Glide.with(messageIv.context)
                .load(data.content)
                .apply(
                    RequestOptions()
                        .apply {
                            diskCacheStrategy(DiskCacheStrategy.ALL)
                            skipMemoryCache(true)
                        })
                .into(messageIv)

          messageIv.visibility = View.VISIBLE
          messageTv.apply {
                visibility = View.GONE
          }
      }
}

Полагаю, это вызов связывания каждый раз, когда я прокручиваю, и это делает видимость исчезнувшей и видимой. Что приводит к тому, что представление имеет размер 0dp в течение некоторого времени, и внезапно, когда изображение загружается, оно создает внезапную прокрутку в представлении, делая его очень нестабильным.

Есть ли обходной путь для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...