如何在Android中以编程方式禁用表情符号

Ruc*_*hir 8 android android-softkeyboard emoji android-viewtreeobserver

我想以编程方式隐藏键盘上的表情符号和自动建议.它适用于某些Android设备,但不适用于所有设备.这是隐藏自动建议的代码:

txtSingupemail.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS 
                           |InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
txtSignuppwd.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
txtSignuppwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

这是我的UI的快照:

在此输入图像描述

这是用户单击signIn按钮时的布局.当用户点击标记为红色的左下角图标时,由于表情符号作为建议,键盘高度会增加.

见下面的快照:

在此输入图像描述

有没有办法以编程方式隐藏键盘上的那些顶级表情符号?

Anj*_*tix 19

试试这个对我有用

editText.setFilters(new InputFilter[]{new EmojiExcludeFilter()});
private class EmojiExcludeFilter implements InputFilter {

        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                int type = Character.getType(source.charAt(i));
                if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) {
                    return "";
                }
            }
            return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)


Com*_*are 6

Android 输入法编辑器(又称软键盘)有数百个(如果不是数千个)。

没有人必须提供表情符号。欢迎那些愿意的人随时随地提供他们想要的服务。

输入法编辑器不需要遵守EditText. 因此,输入法编辑器不需要提供任何阻止表情符号输入的方法。而且,即使有些确实提供了这种能力,其他人也可能不会,而那些提供的可能会通过不同的标志来实现。

键盘上是否有表情符号选项由键盘开发人员和用户(选择要使用的键盘的用户)决定。你没有投票权。

由于据我所知,表情符号只是 Unicode 字符,并且您应该在其他地方支持 Unicode 字符(例如中文字形),因此尚不清楚您必须避免使用表情符号的技术原因。TextWatcher话虽这么说,如果您反对表情符号,欢迎您尝试将它们从输入的文本中过滤掉(例如,使用)。