首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android EditText中禁止输入表情符号?

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

Stack Overflow用户
提问于 2014-04-10 22:23:54
回答 13查看 42.8K关注 0票数 47

text inputType的大多数实现( URI、密码等除外)对于EditText和TextView,允许使用表情符号--尽管在大多数谷歌键盘配置中,这个按钮是隐藏的。有没有办法禁止在EditText中输入表情符号?是否有一个可以与textMultiLine配对的inputType参数可以禁用Emoji?

EN

Stack Overflow用户

发布于 2015-12-03 13:55:59

修改build.gradle文件,将XEditText添加到您的项目:

代码语言:javascript
运行
复制
dependencies{
    compile 'com.xw.repo:xedittext:2.0.0@aar'
}

之后,在您的layout.xml

代码语言:javascript
运行
复制
<com.xw.repo.XEditText
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:x_disableEmoji="true"/>

或者:

如下所示自定义EditText:

代码语言:javascript
运行
复制
public class CustomEditText extends EditText {
    public CustomEditText(Context context) {
        super(context);
        init();
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        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;
        }
    }
}

两者都会工作得很好!

票数 28
EN
查看全部 13 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22990870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档