EmojiAppCompatEditText 不显示空格
EmojiAppCompatEditText doesn't show spaces
我已将我的应用程序中的一个 EditText
替换为 EmojiAppCompatEditText
,并且表情符号工作完美,但当我键入数字时,它们出现的空格很小,而纯空格根本不出现。当我按下发送键时,字段中的文本出现在 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" />
应用程序 class 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)
并由 AndroidStudio 文件 noto_color_emoji_compat.xml
从 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
具有相同字符串的 EmojiAppCompatEditText
和 EmojiAppCompatTextView
的屏幕截图。
EmojiAppCompatEditText
自动使用通过 EmojiCompat.init()
配置的 emoji 字体作为 Emoji 字符。
但是通过 android:fontFamily
属性引用 EmojiCompat 字体,你告诉 EditText
始终使用表情符号字体,即也用于非表情符号字符。表情符号字体包含数字的字形,这就是数字呈现怪异的原因。它还包含 space 字符的字形,但宽度为零。这就解释了为什么您看不到 space。对于表情符号字体中不存在的所有字形,使用后备字体。这就是 "G" 和 "g" 看起来不错的原因。
解决方案是简单地从 EmojiAppCompatEditText
中删除 android:fontFamily
属性。它仍然会为表情符号字符发挥它的魔力,并使用主题中的字体呈现所有非表情符号字符。
我已将我的应用程序中的一个 EditText
替换为 EmojiAppCompatEditText
,并且表情符号工作完美,但当我键入数字时,它们出现的空格很小,而纯空格根本不出现。当我按下发送键时,字段中的文本出现在 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" />
应用程序 class 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)
并由 AndroidStudio 文件 noto_color_emoji_compat.xml
从 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
具有相同字符串的 EmojiAppCompatEditText
和 EmojiAppCompatTextView
的屏幕截图。
EmojiAppCompatEditText
自动使用通过 EmojiCompat.init()
配置的 emoji 字体作为 Emoji 字符。
但是通过 android:fontFamily
属性引用 EmojiCompat 字体,你告诉 EditText
始终使用表情符号字体,即也用于非表情符号字符。表情符号字体包含数字的字形,这就是数字呈现怪异的原因。它还包含 space 字符的字形,但宽度为零。这就解释了为什么您看不到 space。对于表情符号字体中不存在的所有字形,使用后备字体。这就是 "G" 和 "g" 看起来不错的原因。
解决方案是简单地从 EmojiAppCompatEditText
中删除 android:fontFamily
属性。它仍然会为表情符号字符发挥它的魔力,并使用主题中的字体呈现所有非表情符号字符。