From e9477f74f0d4c4357540971f49119371e043bba0 Mon Sep 17 00:00:00 2001 From: klxiaoniu Date: Tue, 18 Jul 2023 17:04:14 +0800 Subject: [PATCH] fix: ShowMsgAt cannot display emos and links correctly --- app/src/main/java/me/ketal/hook/ShowMsgAt.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/me/ketal/hook/ShowMsgAt.kt b/app/src/main/java/me/ketal/hook/ShowMsgAt.kt index d5c790e393..cfbbff1127 100644 --- a/app/src/main/java/me/ketal/hook/ShowMsgAt.kt +++ b/app/src/main/java/me/ketal/hook/ShowMsgAt.kt @@ -86,12 +86,14 @@ object ShowMsgAt : CommonSwitchFunctionHook(), OnBubbleBuilder { is TextView -> { copeAtInfo(content, atList) } + is ViewGroup -> { content.forEach { if (it is TextView) copeAtInfo(it, atList) } } + else -> { Log.d("暂不支持的控件类型--->$content") return @@ -134,7 +136,8 @@ object ShowMsgAt : CommonSwitchFunctionHook(), OnBubbleBuilder { } } - private fun createAtSpanBySearch(text: String, atElements: List): SpannableString { + private fun setAtSpanBySearch(textView: TextView, atElements: List) { + val text = textView.text val ssb = SpannableString(text) for (at in atElements) { if (at.content.length >= 2) { @@ -145,7 +148,7 @@ object ShowMsgAt : CommonSwitchFunctionHook(), OnBubbleBuilder { ssb.setSpan(createClickSpanForUid(uid), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) } } - return ssb + textView.text = ssb } override fun onGetViewNt(rootView: ViewGroup, chatMessage: MsgRecord, param: XC_MethodHook.MethodHookParam) { @@ -167,8 +170,7 @@ object ShowMsgAt : CommonSwitchFunctionHook(), OnBubbleBuilder { val tv = rootView.findHostView("ex1") // TODO 2023-07-16 有时候 ex1 会为空 tv?.let { - val spannable = createAtSpanBySearch(tv.text.toString(), atElements) - tv.text = spannable + setAtSpanBySearch(it, atElements) } }