#android #android-layout #android-recyclerview
#Android #android-макет #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 в течение некоторого времени, и внезапно, когда изображение загружается, оно создает внезапную прокрутку в представлении, что делает его очень нестабильным.
Есть какие-либо обходные пути для этого?
Комментарии:
1. Не используйте одни и те же
ViewHolder
s как для изображений, так и для текстовых сообщений. Разделите их на несколькоitemViewType
с их собственными макетами.2. @Павел Привет. Можете ли вы немного объяснить, почему этого не должно быть? Спасибо.