最强理解:Android对EditText输入时设置监听即TextWatcher的用法

有时我们需要对EditText输入时设置监听,比如对EditText进行格式控制(一般用正则表达式),判断输入的内容是否合法。笔者学习android一般先查看官方文档,在学习本知识点的时候看了一些其他人写的博客,但是看了几篇博文仍旧一些参数含义的不是很理解,本文笔者就从官方文档开始讲起,我们先看官方文档怎么介绍TextWatcher(接口)三个抽象方法。

最强理解:Android对EditText输入时设置监听即TextWatcher的用法_第1张图片

当在EditText进行文本输入时,调用下面三个方法,不同的方法得到的方法有所不同,我们看看它们能为我们提供什么样的数据吧!可以利用给我传过来的数据做我们许多想做的事情。
先翻译翻译每个方法的含义,如果有什么翻译的不好的地方欢迎批评指正:

  1. afterTextChanged(Editable s):
    含义:“这个方法被调用就是为了通知你在 在s的某个地方的文本内容被改变了!”
  2. beforeTextChanged(CharSequence s, int start, int count, int after):
    含义: “表示有count个字符从start位置开始**被**after长度新的文本所替换。”
  3. onTextChanged(CharSequence s, int start, int before, int count):
    含义: “表示有count个字符从start位置开始已经完成对before长度的旧的文本的替换。”
    大家细细品味后面两个方法的不同吧!
package com.example.edittextaddtextchangelistener;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;


public class MainActivity extends Activity {
    private EditText mEditText;
    private TextWatcher mWatcher;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mEditText = (EditText) findViewById(R.id.content);
        mWatcher = new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.e("onTextChanged----->", "有"+count+"个字符仅仅从"+start+"开始要替换"+before+"个旧的字符");
            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.e("beforeTextChanged----->", "有"+count+"个字符从"+start+" 位置开始  已经被"+ after+"个字符所替换");
            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.e("afterTextChanged----->", "最终内容:" + s.toString());

            }
        };
        mEditText.addTextChangedListener(mWatcher);
    }
}

我们依次输入“ abc” 之后 再依次删除 “cba”看看有什么输出效果吧!

输入“abc”结果图:

最强理解:Android对EditText输入时设置监听即TextWatcher的用法_第2张图片

依次删除“cba”结果图:

最强理解:Android对EditText输入时设置监听即TextWatcher的用法_第3张图片

不知大家能否理解,希望大家通过这篇博文能够认识TextWatcher这个接口。
有什么错误欢迎联系笔者批评指正!

你可能感兴趣的:(Android)