Android中监听EditText内容变化 两种方式详解

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  输入结束呈现在输入框中的信息   
    }  
});
发布了43 篇原创文章 · 获赞 22 · 访问量 5931

猜你喜欢

转载自blog.csdn.net/qq_41466437/article/details/103075476