? 本節介紹一下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(); } }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
