EditText TextView 输入内容变化监听 TextWatcher 参数详解(最全面详细的讲解)

本文详细讲解了EditText和TextView如何处理输入内容变化的监听,包括两种实现方式:1) TextView的onTextChanged()方法,通过示例演示了复制、输入和删除操作;2) 使用TextWatcher接口进行监听,并解析了TextWatcher回调参数。
摘要由CSDN通过智能技术生成

一,EditText 继承 TextView,因此二者在处理 输入内容变化监听的方式上是一致的

public class EditText extends TextView {
   
    public EditText(Context context) {
        this(context, null);
    }

二, 输入内容变化监听,有两种实现方式

(1) TextView 的 onTextChanged() 方法

    /**
     *  textview 内容发生变化后,回调该方法,需要子类实现
     * @param text 变化后的内容
     * @param start 从哪个位置开始发生变化的
     * @param lengthBefore 删除的字符个数(增加内容该值为0)
     * @param lengthAfter 增加的字符个数(删除内容该值为0)
     */
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
        // intentionally empty, template pattern method can be overridden by subclasses
    }
}

demo演示:

@SuppressLint("AppCompatCustomView")
public class CustomEditText extends EditText {
   
    public CustomEditText(Context context) {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
        Log.d("CustomEditText", "CharSequence text: " + text + " ||int start " + start + " ||int lengthBefore: " + lengthBefore + " ||int lengthAfter: " + lengthAfter);
    }
}

复制字符串:abcd 然后再输入 2

09-03 19:29:44.005 6137-6137/com.crg.androidtest D/CustomEditText: CharSequence text: abcd int start 0 int lengthBefore: 0 int lengthAfter: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值