1.说明
我们在Android开发中,经常会围绕EditText 做各种检测判断。
例如EditText 获取与失去焦点。
刚巧,最近碰见了一个需求:在一个输入框输入账号后,回车时自动进行匹配输入的字段如果满足要求就执行网络请求。
而这个回车的需求就是,焦点从EditText 失去的时候。进行检查EditText中的内容,进行匹配计算。
这个需求很简单,我们只需要给EditText控件添加setOnFocusChangeListener
就可以了。
2.实现
zinyanEditView.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.e("Edit","焦点状态:"+hasFocus);
if(hasFocus){
//获取焦点
}else{
//失去焦点
//处理我们的实际计算需求
}
}
});
- hasFocus只有获取焦点时先ture,然后才会有失去焦点false。
- 点击editText的时候,就会获取焦点,点击其他控件时EditText就会失去焦点。
- 默认进去时EditText 没有获取焦点时,该方法不会被触发。
例如我监听邮箱输入的焦点状态。当我光标处于邮箱栏时,焦点状态为true。当我从邮箱栏移动到密码栏时,焦点状态为false。
这个时候我们界面的焦点在其他控件中切换的时候。邮箱对象的焦点状态一直保持false。onFocusChange
方法不会被重复触发。
简而言之:onFousChange
只有对象的焦点发生改变时才会触发。如果一直属于一种焦点状态,那么它的回调方法不会被重复调用。
评论区