My idea is to set an error View
to the EditText
when the maximum character limit has been reached. Is there any callback about this event, or may be there's another way to achieve this effect? Thanks in advance.
4 に答える
EditText の maxLength 属性は実際には InputFilter であり、自分で記述してコードから提供できます。
オーバーフローがない場合、基本的に null を返す InputFilter.LengthFilter の実装を見ることができます。( 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 )
super を呼び出す InputFilter.LengthFilter の拡張機能を作成し、それを 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");
}
});
最善の解決策は、TextChangedListener を使用し、EditText テストの長さと制限を確認することだと思います。
ありがとう でも-
editText.setFilters() not editText.setInputFilters()