美文网首页Android知识
Edittext的焦点问题

Edittext的焦点问题

作者: jimdear | 来源:发表于2016-09-19 09:09 被阅读63次

    很奇怪,我在给EditText设置setOnFocusChangeListener()监听,但是始终未能成功,焦点一直存在,不知其原因,,代码如下:
    1 et_password.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
    if (hasFocus) {
    InputMethodManager imm = (InputMethodManager) getActivity()
    .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(et_username.getWindowToken(), 0);
    }
    }
    });

    后来各种百度,最后给activity(fragment)设置了setOnTouchListener(this)监听,达到了预期的效果,代码如下:
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    InputMethodManager imm = (InputMethodManager) getActivity() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et_username.getWindowToken(), 0); imm.hideSoftInputFromWindow(et_password.getWindowToken(), 0); return true; }

    这里要解释下返回值true:
    Android Developers 上查看了一下这个接口和这个方法,文档中对该方法的返回值描述如下:True if the listener has consumed the event, false otherwise。大概意思就是说,如果返回true,则表示监听器消耗了该事件(我的理解就是不用继续向上传递该事件了,该事件的传递到此为止);否则返回false。首先触发到的监听是最底层最直接给它设置的监听,如果是false,并且它的父控件如果也注册次监听,那么它的父控件也会监听也会被触发 ;如果是true,则不会触发父控件的监听。

    相关文章

      网友评论

        本文标题:Edittext的焦点问题

        本文链接:https://www.haomeiwen.com/subject/tjngettx.html