美文网首页
android EditText限制输入表情

android EditText限制输入表情

作者: 茈男孑丶猪尾草 | 来源:发表于2020-04-17 10:28 被阅读0次

    public class EmojiUtils {

    //限制输入表情

        public static void setProhibitEmoji(EditText et) {

                InputFilter[] filters = {getInputFilterProhibitEmoji()};

                et.setFilters(filters);

        }

    //限制输入表情,并且限制输入长度

        public static void setProhibitEmojilength(EditText et,int length) {

                InputFilter[] filters = {new InputFilter.LengthFilter(length), getInputFilterProhibitEmoji()};

                et.setFilters(filters);

        }

    public static InputFiltergetInputFilterProhibitEmoji() {

            InputFilter filter =new InputFilter() {

                @Override

                public CharSequencefilter(CharSequence source, int start, int end,

                                          Spanned dest, int dstart, int dend) {

                        StringBuffer buffer =new StringBuffer();

                        for (int i = start; i < end; i++) {

                            char codePoint = source.charAt(i);

                            if (!getIsEmoji(codePoint)) {

                                buffer.append(codePoint);

                             }else {

                                i++;

                                continue;

                          }

        }

        if (sourceinstanceof Spanned) {

            SpannableString sp =new SpannableString(buffer);

                        TextUtils.copySpansFrom((Spanned) source, start, end, null,

                                sp, 0);

                        return sp;

                    }else {

                        return buffer;

                    }

        }

        };

            return filter;

        }

    public static boolean getIsEmoji(char codePoint) {

    if ((codePoint ==0x0) || (codePoint ==0x9) || (codePoint ==0xA)

    || (codePoint ==0xD)

    || ((codePoint >=0x20) && (codePoint <=0xD7FF))

    || ((codePoint >=0xE000) && (codePoint <=0xFFFD))

    || ((codePoint >=0x10000) && (codePoint <=0x10FFFF)))

    return false;

    return true;

        }

    }

        

    调用方法

    editText.setProhibitEmoji(et);

    或者

    editText.setProhibitEmoji(et,5);

    相关文章

      网友评论

          本文标题:android EditText限制输入表情

          本文链接:https://www.haomeiwen.com/subject/inxevhtx.html