diff --git a/changelog.d/8688.bugfix b/changelog.d/8688.bugfix new file mode 100644 index 0000000000..0f746f1293 --- /dev/null +++ b/changelog.d/8688.bugfix @@ -0,0 +1 @@ +Fix issue with timeline message view reuse while rich text editor is enabled \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt index a9cd25ae19..6ffaa6d896 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt @@ -85,8 +85,13 @@ abstract class MessageTextItem : AbsMessageItem() { } holder.previewUrlView.delegate = previewUrlCallback holder.previewUrlView.renderMessageLayout(attributes.informationData.messageLayout) - - val messageView: AppCompatTextView = if (useRichTextEditorStyle) holder.richMessageView else holder.plainMessageView + if (useRichTextEditorStyle) { + holder.plainMessageView?.isVisible = false + } else { + holder.richMessageView?.isVisible = false + } + val messageView: AppCompatTextView = if (useRichTextEditorStyle) holder.requireRichMessageView() else holder.requirePlainMessageView() + messageView.isVisible = true if (useBigFont) { messageView.textSize = 44F } else { @@ -133,11 +138,21 @@ abstract class MessageTextItem : AbsMessageItem() { val previewUrlView by bind(R.id.messageUrlPreview) private val richMessageStub by bind(R.id.richMessageTextViewStub) private val plainMessageStub by bind(R.id.plainMessageTextViewStub) - val richMessageView: AppCompatTextView by lazy { - richMessageStub.inflate().findViewById(R.id.messageTextView) + var richMessageView: AppCompatTextView? = null + private set + var plainMessageView: AppCompatTextView? = null + private set + + fun requireRichMessageView(): AppCompatTextView { + val view = richMessageView ?: richMessageStub.inflate().findViewById(R.id.messageTextView) + richMessageView = view + return view } - val plainMessageView: AppCompatTextView by lazy { - plainMessageStub.inflate().findViewById(R.id.messageTextView) + + fun requirePlainMessageView(): AppCompatTextView { + val view = plainMessageView ?: plainMessageStub.inflate().findViewById(R.id.messageTextView) + plainMessageView = view + return view } }