设置“数字”并输入禁止字符时,EditText隐藏错误消息

问题描述

我有400的EditText

digits

然后我检查<EditText ... android:digits="0123456789ABCDEFabcdef" android:inputType="textCapCharacters|textNoSuggestions" /> 中的输入错误

TextWatcher

但是当我输入任何禁止的字符(例如editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s,int start,int count,int after) { Log.d(TAG,"beforeTextChanged"); } @Override public void onTextChanged(CharSequence s,int before,int count) { Log.d(TAG,"onTextChanged"); } @Override public void afterTextChanged(Editable s) { Log.d(TAG,"afterTextChanged"); try { int color = Color.parseColor(s.toString()); } catch (Exception e){ editText.setError("Wrong color"); } } }); )时,错误消息会重置,因为输入已更改,但是L方法均未调用,可能是由于{{1 }}。

我可以以某种方式解决此问题,而无需删除TextWatcher,也无需手动处理digits中的禁止字符?也许有一种方法可以保证在每次输入操作时都会被调用?

解决方法

我发现InputFilter中出现了错误的按键事件。但是它会覆盖xml中的maxLength(您可以无休止地输入digits中定义的字符),因此必须在代码中手动创建。

InputFilter filter = new InputFilter(){
    @Override
    public CharSequence filter(CharSequence source,int start,int end,Spanned dest,int dstart,int dend) {
        // Check here for input error
        return source;
    }
};
InputFilter.LengthFilter lengthFilter = new InputFilter.LengthFilter(7);
editText.setFilters(new InputFilter[]{hexFilter,lengthFilter});

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...