Android addTextChangedListener方法介绍

本文详细解析了在Android开发中,如何使用TextWatcher监听EditText文本变化,包括beforeTextChanged、onTextChanged和afterTextChanged三个关键方法的作用及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文本变化监听器addTextChangedListener中TextWatcher方法三个方法意义

EditText editText = findViewById(R.id.et_test);
editText.addTextChangedListener(new TextWatcher() {
    // charSequence为在你按键之前显示的字符串  start为新字符串与charSequence开始出现差异的下标  count表示原字符串的count个字符  after表示将会被after个字符替换
    @Override
    public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
        Log.i(TAG, "beforeTextChanged: charSequence=" + charSequence + ", start=" + start + ", count=" + count + ", after=" + after);
    }

    // 按键之前字符串的start位置的before个字符已经被count个字符替换形成新字符串charSequence
    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
        Log.i(TAG, "onTextChanged: charSequence=" + charSequence + ", start=" + start + ", before=" + before + ", count=" + count);
    }

    // afterTextChanged中 editable为EditText显示的内容
    @Override
    public void afterTextChanged(Editable editable) {
        Log.i(TAG, "afterTextChanged: editable=" + editable);
    }
});

通过上面注释已经可以理解了,此处附上测试log

// 输入a
com.nan.myapplication I/breeze: beforeTextChanged: s=, start=0, count=0, after=1
com.nan.myapplication I/breeze: onTextChanged: s=a, start=0, before=0, count=1
// 继续输入b
com.nan.myapplication I/breeze: beforeTextChanged: s=a, start=1, count=0, after=1
com.nan.myapplication I/breeze: onTextChanged: s=ab, start=1, before=0, count=1
// 继续输入GG
com.nan.myapplication I/breeze: beforeTextChanged: s=ab, start=2, count=0, after=2
com.nan.myapplication I/breeze: onTextChanged: s=abGG, start=2, before=0, count=2
// 删除最后一个G
com.nan.myapplication I/breeze: beforeTextChanged: s=abGG, start=3, count=1, after=0
com.nan.myapplication I/breeze: onTextChanged: s=abG, start=3, before=1, count=0
// 将bG选中替换为嘿嘿
com.nan.myapplication I/breeze: beforeTextChanged: s=abG, start=1, count=2, after=2
com.nan.myapplication I/breeze: onTextChanged: s=a嘿嘿, start=1, before=2, count=2

此处省略了afterTextChanged中的log,这个方法没有任何疑问,能少一句log就少一句,清爽!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值