我的想法是在达到最大字符限制时,将错误View
设置给EditText
。是否有关于此事件的回调函数,或者可能还有其他方法实现这种效果?提前致谢。
我的想法是在达到最大字符限制时,将错误View
设置给EditText
。是否有关于此事件的回调函数,或者可能还有其他方法实现这种效果?提前致谢。
EditText中的maxLength属性实际上是一个InputFilter,你可以自己编写代码并从中提供。你可以查看InputFilter.LengthFilter的实现,如果没有溢出,它基本上会返回null。(参见http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/text/InputFilter.java#InputFilter.LengthFilter.filter%28java.lang.CharSequence%2Cint%2Cint%2Candroid.text.Spanned%2Cint%2Cint%29)
你可以创建一个扩展InputFilter.LengthFilter的类,在其中调用super并将其与null进行比较,以决定是否需要显示警报。
editText.setInputFilters(new InputFilter[] {
new InputFilter.LengthFilter(max) {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
CharSequence res = super.filter(source, start, end, dest, dstart, dend);
if (res != null) { // Overflow
editText.setError("Overflow");
}
return res;
}
}
});
setError
。editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > max)
editText.setError("Error");
}
});
谢谢,但是-
editText.setFilters() not editText.setInputFilters()
override fun filter(): CharSequence?
时,请确保返回类型是可空的CharSequence
,带有一个 ?。 - Bugs Happen