EmojiAppCompatEditText不显示空格

时间:2017-09-14 09:30:03

标签: android android-appcompat emoji

我已经使用EditText替换了我的应用程序中的一个EmojiAppCompatEditText,并且emojis工作得很完美,但是当我输入数字时,它们显示的空格很少,并且根本不显示普通空格。当我按下发送时,EmojiAppCompatTextView中出现了来自字段的文字,一切都很好。

这是我的xml:

    <android.support.text.emoji.widget.EmojiAppCompatEditText
            android:id="@+id/message_box"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@id/send_button"
            android:layout_toRightOf="@id/attach_btn"
            android:fontFamily="@font/noto_color_emoji_compat"
            android:hint="@string/say_something"
            android:inputType="textMultiLine|textShortMessage|textCapSentences"
            android:maxHeight="200dp" />

Application类onCreate()中的代码(来自示例的复制粘贴):

        val fontRequest = FontRequest(
                "com.google.android.gms.fonts",
                "com.google.android.gms",
                "Noto Color Emoji Compat",
                R.array.com_google_android_gms_fonts_certs)
        val config = FontRequestEmojiCompatConfig(applicationContext, fontRequest)
            .setReplaceAll(true)
            .setEmojiSpanIndicatorEnabled(BuildConfig.DEBUG)
        EmojiCompat.init(config)

noto_color_emoji_compat.xml文件夹中的AndroidStudio文件font生成:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
        app:fontProviderAuthority="com.google.android.gms.fonts"
        app:fontProviderPackage="com.google.android.gms"
        app:fontProviderQuery="Noto Color Emoji Compat"
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>

在Android 6.0和7.0上重现的问题。 AppCompat库版本为26.0.2

另外,我填写了bug report

具有相同字符串的EmojiAppCompatEditTextEmojiAppCompatTextView的屏幕截图。enter image description here

1 个答案:

答案 0 :(得分:1)

EmojiAppCompatEditText自动使用通过EmojiCompat.init()配置的表情符号字体表示表情符号字符 但是通过android:fontFamily属性引用EmojiCompat字体,您告诉EditText始终使用表情符号字体,即非表情符号字符。表情符号字体包含数字的字形,这就是数字变得奇怪的原因。它还包含空格字符的字形,但宽度为零。这就解释了为什么你看不到空间。对于表情符号字体中不存在的所有字形,使用后备字体。这就是“G”和“g”看起来没问题的原因。

解决方案是从android:fontFamily中删除EmojiAppCompatEditText属性。它仍将为表情符号字符带来魔力,并使用主题中的字体渲染所有非表情符号字符。