2017-09-14 20 views
0

私のアプリケーションのがEmojiAppCompatEditTextに置き換えられました。emojisは完璧に動作しますが、数字を入力すると小さなスペースで表示され、プレーンスペースはまったく表示されません。フィールドを送信してテキストを入力すると、EmojiAppCompatTextViewにすべて表示されます。 ApplicationクラスのonCreate()EmojiAppCompatEditTextに空白が表示されない

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

コード(つまり例からコピー&ペーストです):

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

また、私は同じ文字列でEmojiAppCompatEditTextEmojiAppCompatTextViewbug report

スクリーンショットを埋めてきています。 enter image description here

答えて

1

EmojiAppCompatEditTextは、絵文字にEmojiCompat.init()で設定された絵文字フォントを自動的に使用します。
android:fontFamily属性を使用してEmojiCompatフォントを参照すると、EditTextには常に絵文字フォントが使用されるように、つまり絵文字以外の文字も使用されます。絵文字フォントには数字のグリフが含まれているため、数字が変わってしまいます。スペース文字のグリフも含まれていますが、幅はゼロです。なぜスペースがないのかが分かります。絵文字フォントに存在しないすべてのグリフについて、フォールバックフォントが使用されます。そういうわけで、 "G"と "g"は大丈夫です。

解決策は、EmojiAppCompatEditTextからandroid:fontFamily属性を単純に削除することです。絵文字の魔法を引き続き実行し、絵文字以外のすべての文字をテーマのフォントでレンダリングします。

関連する問題