监听EditText变化---TextWatcher 类用法详解

结论来源是通过打Log来总结的。比较浅的来解释 TextWatcher 类。
 
 1         TextWatcher textWatcher = new TextWatcher() {
 2             @Override
 3             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 4                 //s--未改变之前的内容
 5                 //start--内容被改变的开始位置
 6                 //count--原始文字被删除的个数
 7                 //after--新添加的内容的个数
 8                 //---------start和count结合从s中获取被删除的内容-------
 9                 String deleText = s.toString().substring(start, start + count);
10             }
11             @Override
12             public void onTextChanged(CharSequence s, int start, int before, int count) {
13                 //s--改变之后的新内容
14                 //start--内容被改变的开始位置
15                 //before--原始文字被删除的个数
16                 //count--新添加的内容的个数
17                 //---------start和count结合从s中获取新添加的内容-------
18                 String addText = s.toString().substring(start, start + count);
19             }
20             @Override
21             public void afterTextChanged(Editable s) {
22                 //s--最终内容
23             }
24         };
25         edit_content.addTextChangedListener(textWatcher);

 

 
需注意:
参数 CharSequence s的类型是SpannableStringBuilder,不要发生类型转换异常这样的错误
在SpannableStringBuilder类中, TextWatcher的3个方法是这样被回调(下图),其中
s位置传入的内容是this(即SpannableStringBuilder类的当前实例)。
说明:TextWatcher 的3个方法中s参数指向的是同一片内存区域
 
SpannableStringBuilder部分源码如下:
 
在SpannableStringBuilder类中的replace()方法中有对以上3个方法的调用
 

 

转载于:https://www.cnblogs.com/yjing/p/5316985.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值