android - 由于可变大小的图像加载,聊天滚动(回收站视图)不流畅?
问题描述
我正在尝试制作一个聊天应用程序。我有不同的布局来接收消息和发送消息。我无法平滑滚动可能是因为图像大小可变?我认为这个问题与我为聊天消息框所做的布局有关。
<?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>
当我向上滚动时它会闪烁。View Holder的代码如下
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
}
}
}
我猜它每次滚动时都会调用 bind ,它会使可见性消失并可见。这会导致视图在一段时间内具有 0dp 大小,并且在加载图像时突然在视图中创建一个突然滚动,使其非常不稳定。
有什么解决方法吗?
解决方案
推荐阅读
- python-2.7 - scrapy如何在formdata中选择和传递单选按钮
- python - 修复导入 MySQL 表时密码哈希被截断的问题
- javascript - chrome 中的视频播放
- node.js - TypeScript - 如何导入“os”模块
- apache-nifi - Nifi 从 Oracle 问题中获取数据
- python - Tkinter:Python 3 框架画布上矩形中的按钮。
- r - R:在 ggplot 中使用 log10 刻度为 y 轴自定义刻度标记
- node.js - 在 React 中重定向 - 节点
- google-cloud-platform - 创建 GCR 秘密错误:只需要一个 NAME,得到 26
- venn-diagram - VennDiagram R 中的“不可能”错误消息