理解EditText的InputFilter
使用EditText的过程中,有时会遇到disable(禁止输入)的需求,直接使用setEnabled(false)是无效的。网上搜索发现可以通过设置InputFilter来实现
int n = mFilters.length; for (int i = 0; i < n; i++) { CharSequence out = mFilters[i].filter(text, 0, text.length(), EMPTY_SPANNED, 0, 0); if (out != null) { text = out; } }... sendOnTextChanged(text, 0, oldlen, textLength); onTextChanged(text, 0, oldlen, textLength);遍历所有的InputFilter,如果filter后的结果不是null,更新text变量。这意味着filter返回null就代表保持原文本不变(如上,在InputFilter.LengthFilter中看到的)。所有InputFilter后的结果就是最终显示在TextView中的文本。
了解了InputFilter的原理,就知道如何对TextView/EditText的文本做“手脚”了。比如