Android 监听EditText文本输入 EditText监听事和输入事件

方法一:使用setOnKeyListener(),这种方式只能监听硬键盘事件所以大多数android设备不能用

editText.setOnKeyListener(new View.OnKeyListener() {              
            @Override  
            public boolean onKey(View v, int keyCode, KeyEvent event) {  
                Log.i(TAG, editText.getText());  
                return false;  
            }  
        }); 
方法二:使用TextWatcher类,可监听软键盘和硬键盘的,只需实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理
editText.addTextChangedListener(new TextWatcher() {           
            @Override  
            public void onTextChanged(CharSequence s, int start, int before, int count) {  
            	Log.i(TAG, "输入文字中的状态,count是输入字符数"); 
                Log.i(TAG, editText.getText());  
            }  
              
            @Override  
            public void beforeTextChanged(CharSequence s, int start, int count,  
                    int after) {   
            	Log.i(TAG, "输入文本之前的状态");  
            }  
              
            @Override  
            public void afterTextChanged(Editable s) {   
            	Log.i(TAG, "输入文字后的状态");  
            }  
        });
方法三:实现当输入到最大值时则不允许再输入,另外由EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
  private void setEditable(EditText editText, int maxLength, boolean value) {  
        if (value) {  
            editText.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });  
            editText.setCursorVisible(true);  
            editText.setFocusableInTouchMode(true);  
            editText.requestFocus();  
        } else {  
            editText.setFilters(new InputFilter[] { new InputFilter() {  
                @Override  
                public CharSequence filter(CharSequence source, int start,  
                        int end, Spanned dest, int dstart, int dend) {  
                    return source.length() < 1 ? dest.subSequence(dstart, dend)  
                            : "";  
                }  
            } });  
            editText.setCursorVisible(false);  
            editText.setFocusableInTouchMode(false);  
            editText.clearFocus();  
        }  
    } 




你可能感兴趣的:(android,EditText,监听EditText文本输入,EditText监听事件)