Android android.text.TextWatcher详解
When an object of a type is attached to an Editable, its methods will be called when the text is changed.
当一个可编辑的对象的文本改变的时候,它的方法就会被调用。
此接口有三个方法
afterTextChanged(Editable s)
This method is called to notify you that, somewhere within s
, the text has been changed.
当s的某个位置的文本已经改变,这个方法会被调用
beforeTextChanged(CharSequence s, int start, int count, int after)
This method is called to notify you that, within s
, the count
characters beginning at start
are about to be replaced by new text with length after
.
在s中,当从start开始的count个字符将被长度为after的新文本替换时,这个方法会被调用
onTextChanged(CharSequence s, int start, int before, int count)
This method is called to notify you that, within s
, the count
characters beginning at start
have just replaced old text that had length before
.
在s中,当从start开始有count个字符替换长度为before的旧文本时,这个方法会被调用
下面是一个限制输入"."个数的例子
import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.util.Log;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity { EditText et_content; TextView tv_numOfChar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_content = (EditText)findViewById(R.id.et_content); tv_numOfChar = (TextView)findViewById(R.id.tv_numOfChar); et_content.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.i("log","beforeTextChanged:" + s + "------" + start + "------" + after + "------"+ count); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { Log.i("log","onTextChanged:" + s + "------" + start + "------"+ before+ "------" + count); if (et_content.getText().toString().indexOf(".") >= 0) { tv_numOfChar.setText("已经输入\".\"不能重复输入"); if (et_content.getText().toString().indexOf(".", et_content.getText().toString().indexOf(".") + 1) > 0) { et_content.setText(et_content.getText().toString().substring(0, et_content.getText().toString().length() - 1)); et_content.setSelection(et_content.getText().toString().length()); } } } @Override public void afterTextChanged(Editable s) { Log.i("log","afterTextChanged:" + s); } }); }}
更多相关文章
- Android 复习笔记之图解TextView类及其XML相关属性和方法
- android.support library找不到的解决方法
- Android项目中如果json字符串中key-value顺序很重要,不要使用Andr
- android 调用 react-native方法
- android 开发技巧(8)--格式化 TextView 的文本
- Eclipse build Android时不生成apk问题解决方法
- Android的线程使用来更新UI----View的几种更新方法(Thread、Hand
- android使用全局变量的两种方法