4

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

4 に答える 4

11

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;
        }
    }
});
于 2012-11-13T09:05:59.420 に答える
5

編集テキストの を使用できます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");
        }
    });
于 2012-11-13T09:03:51.150 に答える
1

最善の解決策は、TextChangedListener を使用し、EditText テストの長さと制限を確認することだと思います

于 2012-11-13T09:04:45.303 に答える
0

ありがとう でも-

editText.setFilters() not editText.setInputFilters()
于 2013-08-05T10:23:08.753 に答える