http://www.android-study.com/jichuzhishi/154.html
1.第一種方法:使用setOnKeyListener(),不過這種方式只能監聽硬鍵盤事件。
1 edittext.setOnKeyListener(new View.OnKeyListener() {2 @Override3 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 @Override12 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 @Override11 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 }