2017-09-14 94 views
0

我在我的應用程序中用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

回答

1

EmojiAppCompatEditText自動使用通過EmojiCompat.init()爲表情符號字符配置的表情符號字體。
但通過使用android:fontFamily屬性引用EmojiCompat字體,您告訴EditText始終使用表情符號字體,即也適用於非表情符號字符。表情符號字體包含數字的字形,這就是爲什麼數字變得怪異。它還包含空格字符的字形,但寬度爲零。這就解釋了爲什麼你看不到空間。對於表情符字體中不存在的所有字形,使用後備字體。這就是爲什麼「G」和「g」看起來不錯。

解決方法是簡單地從EmojiAppCompatEditText中刪除android:fontFamily屬性。對於表情符號字符,它仍然會發揮它的魔力,並使用主題中的字體呈現所有非表情符號字符。