android:textSize="24sp"
android:textColor="#424242"
android:typeface="sans-serif"
android:fontFamily="sans-serif-medium,noto-color-emoji"
implementation "androidx.emoji:emoji-appcompat:1.1.0"
然后,就可以在代码中使用 Spannable 来显示 emoji 了:
// 初始化 EmojiCompat
if (!EmojiCompat.get().initialized) {
EmojiCompat.init(BUNDLED, object : EmojiCompat.InitCallback() {
override fun onInitialized() {
Log.i(TAG, "EmojiCompat initialized")
}
override fun onFailed(throwable: Throwable?) {
Log.e(TAG, "EmojiCompat initialization failed", throwable)
}
})
}
// 创建一个 Spannable
val text = "This is a smiley face �"
val spannable = SpannableString.valueOf(text)
// 在文本中插入 emoji
val emojiStart = text.indexOf("�")
if (emojiStart != -1) {
val drawable = EmojiCompat.get().getDrawable("�")
if (drawable != null) {
drawable.setBounds(0, 0, 32, 32) // 设置图片大小
val span = ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM)
spannable.setSpan(span, emojiStart, emojiStart + 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
}
// 显示 Spannable
textView.text = spannable