美文网首页Android
android:maxLength失效的问题

android:maxLength失效的问题

作者: onlyxing | 来源:发表于2017-11-24 14:13 被阅读13次

    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失效的问题

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