EmojiCompat Flags无法在Marshmallow及以上版本上运行(但在较旧的OS版本上运行良好)

时间:2018-03-04 22:22:37

标签: android android-support-library

我正在尝试使用新的EmojiCompatTextView将标记显示为表情符号。它适用于较旧的Android版本,但在Marshmallow及更高版本上它显示了占位符问号标记。这是XML:

            <android.support.text.emoji.widget.EmojiAppCompatTextView
                android:id="@+id/opponent_flag"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                android:textSize="14sp"
                android:text=""
                android:layout_gravity="center_vertical"
                />

和初始化EmojiCompat的代码(直接来自谷歌文档):

val config: EmojiCompat.Config
// Use a downloadable font for EmojiCompat
val fontRequest = FontRequest(
        "com.google.android.gms.fonts",
        "com.google.android.gms",
        "Noto Color Emoji Compat",
        R.array.com_google_android_gms_fonts_certs)
config = FontRequestEmojiCompatConfig(applicationContext, fontRequest)
        .setReplaceAll(true)
        .registerInitCallback(object : EmojiCompat.InitCallback() {
            override fun onInitialized() {
                Log.i(TAG, "EmojiCompat initialized")
            }

            override fun onFailed(@Nullable throwable: Throwable?) {
                Log.e(TAG, "EmojiCompat initialization failed", throwable)
            }
        })
EmojiCompat.init(config)

我在日志中收到消息EmojiCompat initialized,事实上除了标志之外我尝试过的所有其他表情符号。

下面是Lollipop和Nougat的屏幕截图,展示了它应该如何工作以及它是如何工作的: enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

看起来是一个错误,最近声称由Google修复,但遗憾的是其他迹象。

https://issuetracker.google.com/issues/72084134

答案 1 :(得分:0)

这不是一个错误。您的代码按预期工作。请尝试删除以下代码以解决您的问题

        .setReplaceAll(true)