Android中监听EditText内容变化 两种方式详解
1、软键盘回车监听事件
et_submit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
//第一个参数:TextView textView 表示当前触发事件的EditText的对象,类似于
//textView=findViewById(R.id.name_edit)
//第二个参数:actionId 表示 按下“完成按钮”,这里和xml文件中EditText属性imeOptions对应但要注意
//actionId是指软盘上的,而键盘上的actionId与软盘上的不一样;即在软盘上“完成按钮”的actionId为0,
//而键盘上的“完成按钮(回车键)”的actionId为6
//第三个参数:event 表示 按下“完成按钮”,这里和xml文件中EditText属性imeOptions对应,
//但keyEvent里面的内容更丰富,内容如下:
keyEvent.toString()=KeyEvent {
action=ACTION_DOWN, keyCode=KEYCODE_ENTER,
scanCode=28, metaState=0, flags=0x8,
repeatCount=0, eventTime=5664212,
downTime=5664212, deviceId=1, source=0x301 }
return false; //返回值:返回true,保留软键盘;false,隐藏软键盘
}
});
注:需要注意的是 setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的回车键才会触发
2、文本改变监听事件
et_submit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence text, int start, int before, int count) {
//text 输入框中改变后的字符串信息
//start 输入框中改变后的字符串的起始位置
//before 输入框中改变前的字符串的位置 默认为0
//count 输入框中改变后的一共输入字符串的数量
//这个方法是在Text改变过程中触发调用的,它的意思就是说在原有的文本text中,从start开始的count个字符
//替换长度为before的旧文本,注意这里没有将要之类的字眼,也就是说一句执行了替换动作
}
@Override
public void beforeTextChanged(CharSequence text, int start, int count,int after) {
//text 输入框中改变前的字符串信息
//start 输入框中改变前的字符串的起始位置
//count 输入框中改变前后的字符串改变数量一般为0
//after 输入框中改变后的字符串与起始位置的偏移量
//这个方法是在Text改变之前被调用,它的意思就是说在原有的文本text中,从start开始的count个字符
//将会被一个新的长度为after的文本替换,注意这里是将被替换,还没有被替换
}
@Override
public void afterTextChanged(Editable edit) {
//edit 输入结束呈现在输入框中的信息
}
});