一,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: