📜  Android 带有TextWatcher的Android EditText(1)

📅  最后修改于: 2023-12-03 14:59:16.365000             🧑  作者: Mango

Android 带有TextWatcher的Android EditText

简介

Android EditText 是Android中一个常用的UI控件,用于接收用户输入。而TextWatcher是Android中一个接口,可以对EditText中文本的变化进行监听。我们可以将TextWatcher绑定到EditText上,然后通过操作EditText的方式来捕获用户输入内容的变化。

TextWatcher的几个方法

在TextWatcher接口中,主要有如下三个方法:

public void beforeTextChanged(CharSequence s, int start, int count, int after);
public void onTextChanged(CharSequence s, int start, int before, int count);
public void afterTextChanged(Editable s);
  • beforeTextChanged:当EditText中文本将要改变时调用,在EditText中的文本改变之前

  • onTextChanged:当EditText中文本改变时调用

  • afterTextChanged:当EditText中文本已经改变时调用,在EditText中的文本改变之后

如何使用TextWatcher

使用TextWatcher可以监听EditText的文本变化,而且TextWatcher可以在一段文本中同时监听多个EditText的变化。我们可以在Activity的onCreate()方法中添加如下代码:

EditText editText = findViewById(R.id.edittext);
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});

在添加TextWatcher之后,我们就可以在TextWatcher的回调方法里面监听EditText的文本变化了。

示例代码
public class MainActivity extends AppCompatActivity {
    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.edittext);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.d("TextWatcher", "onTextChanged:" + s);
            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.d("TextWatcher", "afterTextChanged:" + s);
            }
        });
    }
}

在上面的示例代码中,我们通过在TextWatcher的onTextChanged()和afterTextChanged()方法中打印日志,来演示如何监听EditText的文本变化。