侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 290 篇文章
  • 累计创建 57 个标签
  • 累计收到 98 条评论

Android EditText失去焦点与获取焦点的监听事件OnFocusChangeListener

Z同学
2021-12-29 / 0 评论 / 4 点赞 / 2,315 阅读 / 760 字
温馨提示:
本文最后更新于 2021-12-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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{
            //失去焦点
            //处理我们的实际计算需求
        }
    }
});
  1. hasFocus只有获取焦点时先ture,然后才会有失去焦点false。
  2. 点击editText的时候,就会获取焦点,点击其他控件时EditText就会失去焦点。
  3. 默认进去时EditText 没有获取焦点时,该方法不会被触发。

例如我监听邮箱输入的焦点状态。当我光标处于邮箱栏时,焦点状态为true。当我从邮箱栏移动到密码栏时,焦点状态为false。

image-20211229180938879

image-20211229180957067

这个时候我们界面的焦点在其他控件中切换的时候。邮箱对象的焦点状态一直保持false。onFocusChange方法不会被重复触发。

简而言之:onFousChange 只有对象的焦点发生改变时才会触发。如果一直属于一种焦点状态,那么它的回调方法不会被重复调用。

4

评论区