本节介绍一下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();
}