如何禁止在Android EditText中输入表情符号?

50

大多数EditText和TextView的text输入类型实现(除了URI、password等)允许使用Emoji,尽管在大多数Google键盘配置中这个按钮是隐藏的。是否有一种方法可以禁用在EditText中输入Emoji?是否有一个可以与textMultiLine配对的inputType参数可以禁用Emoji?


试试这个:https://dev59.com/-GAg5IYBdhLWcg3wdqwy#39491095 它适用于TextView和AutoCompleteTextView。 - user1506104
Kotlin解决方案在此处 - https://dev59.com/w1gR5IYBdhLWcg3ww_s0#52947835 - abitcode
14个回答

0

您可以使用输入类型为"textVisiblePassword"。这将禁用键盘上的表情符号。但是用户仍然可以将笑脸复制粘贴到编辑文本中。

<EditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:inputType="textVisiblePassword" />

0
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}"


-2

另一种解决方案:

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


-4

尝试使用 android:inputtype="textUri|textMultiLine"

在这个参数中,键盘将把语音输入按钮改为 '/' 按钮。


3
并非所有的键盘都具备该功能。有些键盘可能会有,但这并不是一项通用功能。你不能指望键盘对于某种模式会有任何特定的行为表现。 - Gabe Sechan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接