android EditText限制输入表情

2020-04-17  本文已影响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);

上一篇 下一篇

猜你喜欢

热点阅读