聊天滚动(回收者视图)由于图像尺寸可变而导致不流畅吗?

时间:2019-04-08 18:30:54

标签: android android-layout android-recyclerview

我正在尝试制作聊天应用程序。我在这里有不同的布局来接收消息和发送消息。由于图像尺寸可变,我无法平滑滚动吗?我认为这个问题与我为聊天消息框设置的布局有关。

<?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,并且在加载图像时突然发生,它会在视图中突然滚动,从而使其非常不稳定。

有任何解决方法吗?

0 个答案:

没有答案