大多数EditText和TextView的text
输入类型实现(除了URI、password等)允许使用Emoji,尽管在大多数Google键盘配置中这个按钮是隐藏的。是否有一种方法可以禁用在EditText中输入Emoji?是否有一个可以与textMultiLine
配对的inputType参数可以禁用Emoji?
大多数EditText和TextView的text
输入类型实现(除了URI、password等)允许使用Emoji,尽管在大多数Google键盘配置中这个按钮是隐藏的。是否有一种方法可以禁用在EditText中输入Emoji?是否有一个可以与textMultiLine
配对的inputType参数可以禁用Emoji?
您可以使用输入类型为"textVisiblePassword"。这将禁用键盘上的表情符号。但是用户仍然可以将笑脸复制粘贴到编辑文本中。
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textVisiblePassword" />
fun EditText.filterEmoji() {
filters = arrayOf(
InputFilter { source, _, _, _, _, _ ->
source.filter {
Character.getType(it) != Character.SURROGATE.toInt() && Character.getType(it) != Character.OTHER_SYMBOL.toInt()
}
}
)
}
For kotlin ,
use BindingAdapter
@BindingAdapter("disableEmoji")
fun bindDisableEmoji(view: EditText, disableEmoji: Boolean) {
if (disableEmoji) {
view.filterEmoji()
}
}
在xml中 app:disableEmoji="@{true}"
另一种解决方案:
mEtMessageText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS | InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
在这个例子中,它显示了“ENTER”按钮。
InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS 相当于 XML 布局中的 android:inputType="textEmailAddress"。
尝试使用 android:inputtype="textUri|textMultiLine"
。
在这个参数中,键盘将把语音输入按钮改为 '/' 按钮。