EditText輸入事件截獲與監聽
本節介紹一下EditText中進行文字截獲和事件監聽。
預期目標:如下圖,輸入框中每輸入一個字符,下麵的TextView可以迅速的顯示出來輸入框中的內容
1.第一種實現方法:使用setOnKeyListener(),不過這種方式隻能監聽硬鍵盤事件
2.使用TextWatcher類,這種方式是可以監聽軟鍵盤和硬鍵盤的,我們隻需要實現onTextChanged方法即可,另外TextWatcher還提供了beforeTextChanged和afterTextChanged方法,用於更加詳細的輸入監聽處理
3、代碼片段:實現當輸入到最大值時則不允許再輸入了,另外,由於EditText並沒有提供給我們EditText的禁止輸入功能,以下方法也實現了此功能。
預期目標:如下圖,輸入框中每輸入一個字符,下麵的TextView可以迅速的顯示出來輸入框中的內容

1.第一種實現方法:使用setOnKeyListener(),不過這種方式隻能監聽硬鍵盤事件
- edittext.setOnKeyListener(new View.OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- textview.setText(edittext.getText());
- return false;
- }
- });
2.使用TextWatcher類,這種方式是可以監聽軟鍵盤和硬鍵盤的,我們隻需要實現onTextChanged方法即可,另外TextWatcher還提供了beforeTextChanged和afterTextChanged方法,用於更加詳細的輸入監聽處理
- edittext.addTextChangedListener(new TextWatcher() {
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- textview.setText(edittext.getText());
- }
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
- @Override
- public void afterTextChanged(Editable s) {
- }
- });
3、代碼片段:實現當輸入到最大值時則不允許再輸入了,另外,由於EditText並沒有提供給我們EditText的禁止輸入功能,以下方法也實現了此功能。
- private void setEditable(EditText mEdit, int maxLength, boolean value) {
- if (value) {
- mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
- mEdit.setCursorVisible(true);
- mEdit.setFocusableInTouchMode(true);
- mEdit.requestFocus();
- } else {
- mEdit.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)
- : "";
- }
- } });
- mEdit.setCursorVisible(false);
- mEdit.setFocusableInTouchMode(false);
- mEdit.clearFocus();
- }
- }
最後更新:2017-04-02 06:51:53