EmojiAppCompatEditText不显示空格

问题描述:

我在我的应用程序中用EmojiAppCompatEditText取代了一个EditText,表情符号完美,但是当我键入数字时,它们显示的空间很小,并且根本不显示纯空格。当我按下发送和字段中的文字出现在EmojiAppCompatTextView一切都很好。EmojiAppCompatEditText不显示空格

这里是我的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" /> 

代码在应用程序类的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) 

而且从font文件夹中AndroidStudio文件noto_color_emoji_compat.xml产生:

<?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。程序兼容性库的版本是26.0.2

另外,我充满bug report

截图的EmojiAppCompatEditTextEmojiAppCompatTextView用相同的字符串。 enter image description here

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

解决方法是简单地从EmojiAppCompatEditText中删除android:fontFamily属性。对于表情符号字符,它仍然会发挥它的魔力,并使用主题中的字体呈现所有非表情符号字符。