android:maxLength失效的问题

Android EditText禁止输入Emoji后设置android:maxLength失效


但是当我们设置了InputFilter之后可能会出现一个问题,就是当我们在代码中设置 android:maxLength="8"的时候,会发现不起作用了。我们点进去InputFilter,查看其源码我们就会发现,里面还有个自带的LengthFilter。我们就可以通过再添加一个LengthFileter就可以了。

/**

* 禁止EditText输入特殊字符和表情

* @param editText

* @param maxLength 输入框最大输入字符数

*/

public static void setEditTextInhibitInputSpeChat(EditText editText, int maxLength){

            InputFilter filter=new InputFilter() {

                      @Override

                      public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

                                String speChat="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]";

                                 Pattern pattern = Pattern.compile(speChat);

                                 Matcher matcher = pattern.matcher(source.toString());

                                 if(matcher.find())return "";

                                 else return null;

                         }

             };

             editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength), filter});

 }

你可能感兴趣的:(android:maxLength失效的问题)