? 本節介紹一下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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

