本節介紹一下edittext中進行文字截獲和事件監聽。
預期目标:如下圖,輸入框中每輸入一個字元,下面的textview可以迅速的顯示出來輸入框中的内容

1.第一種實作方法:使用setonkeylistener(),不過這種方式隻能監聽硬鍵盤事件
java代碼
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());
}
public void beforetextchanged(charsequence s, int start, int count,
int after) {
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();
}