Android EditText截获与监听输入事件
http://www.android-study.com/jichuzhishi/154.html
1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件。
1 edittext.setOnKeyListener(new View.OnKeyListener() { 2 @Override 3 public boolean onKey(View v, int keyCode, KeyEvent event) { 4 textview.setText(edittext.getText()); 5 return false; 6 } 7 });
2.第二种方法:使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理。
1 edittext.addTextChangedListener(new TextWatcher() { 2 @Override 3 public void onTextChanged(CharSequence s, int start, int before, intcount) { 4 textview.setText(edittext.getText()); 5 } 6 7 @Override 8 public void beforeTextChanged(CharSequence s, int start, int count,int after) { 9 } 10 11 @Override 12 public void afterTextChanged(Editable s) { 13 } 14 });
3、代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
1 private void setEditable(EditText mEdit, int maxLength, boolean value) { 2 if (value) { 3 mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) }); 4 mEdit.setCursorVisible(true); 5 mEdit.setFocusableInTouchMode(true); 6 mEdit.requestFocus(); 7 } 8 else { 9 mEdit.setFilters(new InputFilter[] { new InputFilter() { 10 @Override 11 public CharSequence filter(CharSequence source, int start, intend, Spanned dest, int dstart, int dend) { 12 return source.length() < 1 ? dest.subSequence(dstart, dend) :""; 13 } 14 } }); 15 mEdit.setCursorVisible(false); 16 mEdit.setFocusableInTouchMode(false); 17 mEdit.clearFocus(); 18 } 19 }