这篇文章主要介绍了Android TextWatcher三个回调以及监听EditText的输入案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
TextWatcher是一个监听字符变化的类。当我们调用EditText的addTextChangedListener(TextWatcher)方法之后,就可以监听EditText的输入了。
在new出一个TextWatcher之后,我们需要实现三个抽象方法:
- beforeTextChanged
- onTextChanged
- afterTextChanged
看下beforeTextChanged的注释:
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.
不知道你看懂没有,可能是因为英文水平的问题,我反正是看的很含糊不清。
既然这样,那最好的办法就是自己打个log试一下了。
EditText et = (EditText) findViewById(R.id.et);
TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.d(TAG, "beforeTextChanged: s = " + s + ", start = " + start +
", count = " + count + ", after = " + after);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, "onTextChanged: s = " + s + ", start = " + start +
", before = " + before + ", count = " + count);
}
@Override
public void afterTextChanged(Editable s) {
Log.d(TAG, "afterTextChanged: " + s);
}
};
et.addTextChangedListener(watcher);
首先输入abc123
// 用于屏蔽空格输入的TextWatcher
TextWatcher watcher = new TextWatcher() {
private String mBefore;// 用于记录变化前的文字
private int mCursor;// 用于记录变化时光标的位置
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
mBefore = s.toString();
mCursor = start;
Log.d(TAG, "beforeTextChanged: " + s + ", " + mCursor);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, "onTextChanged: " + s);
}
@Override
public void afterTextChanged(Editable s) {
Log.d(TAG, "afterTextChanged: " + s);
// 这里图方便,是在afterTextChanged判断是否输入之后含有空格,并不是最好的方案
// 理论上应该在onTextChanged中判断输入内容
if (s.toString().contains(" ")) {
Log.i(TAG, "onTextChanged: 包含空格, 设置" + mBefore);
et.removeTextChangedListener(this);
et.setText(mBefore);
et.addTextChangedListener(this);
et.setSelection(mCursor);
}
}
};
et.addTextChangedListener(watcher);
到此这篇关于Android TextWatcher三个回调以及监听EditText的输入案例详解的文章就介绍到这了,更多相关Android TextWatcher三个回调以及监听EditText的输入内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Android TextWatcher三个回调以及监听EditText的输入案例详解
- iOS 对当前webView进行截屏的方法 2023-03-01
- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android实现轮询的三种方式 2023-02-17
- Android studio实现动态背景页面 2023-05-23
- Android实现监听音量的变化 2023-03-30
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Flutter实现底部和顶部导航栏 2022-08-31
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
