2017-09-14 7 views
0

J'ai remplacé un EditText dans mon application avec EmojiAppCompatEditText et emojis fonctionne parfaitement, mais quand je tape les chiffres ils apparaissent avec de petits espaces et des espaces vides n'apparaissent pas du tout. Lorsque j'appuie sur envoyer et texte à partir du champ apparaît dans EmojiAppCompatTextView tout va bien.EmojiAppCompatEditText n'affiche pas d'espaces

Voici mon 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" /> 

code dans onCreate() de classe d'application (c'est copier-coller à partir d'exemples):

 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) 

et généré par Android Studio fichier noto_color_emoji_compat.xml de font dossier:

<?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> 

Numéro reproduit sur Android 6 .0 et 7.0. AppCompat version bibliothèques est 26.0.2

De plus, je suis rempli bug report

Capture d'écran de EmojiAppCompatEditText et EmojiAppCompatTextView avec la même chaîne. enter image description here

Répondre

1

EmojiAppCompatEditText utilise automatiquement la police emoji configurée via EmojiCompat.init() pour les caractères Emoji. Mais en référençant la police EmojiCompat via l'attribut android:fontFamily, vous indiquez à EditText d'utiliser toujours la police emoji, c'est-à-dire également pour les caractères non-emoji. La police emoji contient des glyphes pour les chiffres, c'est pourquoi le nombre est rendu bizarre. Il contient également un glyphe pour le caractère espace, mais il a une largeur nulle. Cela explique pourquoi vous ne voyez aucun espace. Pour tous les glyphes qui ne sont pas présents dans la police emoji, la police de repli est utilisée. C'est pourquoi "G" et "g" vont bien.

La solution consiste simplement à supprimer l'attribut android:fontFamily de EmojiAppCompatEditText. Il fera toujours sa magie pour les personnages emoji et rendra tous les caractères non-emoji utilisant la police du thème.