0

下面的代码在我将焦点转移到另一个 textField 时有效,但当我只是点击屏幕上的任意位置(我想触发 onFocusChanged 事件)时无效。我怎样才能做到这一点?我还需要检查其他文本字段是否没有焦点,因为如果有,则应保留键盘。

usernameET.setOnFocusChangeListener((new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(v == usernameET) {
                    Log.d(LoginPage.Tag, "keyboardOnTouch");
                    if (hasFocus)
                    {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(usernameET,
                                InputMethodManager.SHOW_FORCED);
                    }
                    else {
                        ((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
                                usernameET.getWindowToken(), 0);
                    }
                }
            }
        }));
4

1 回答 1

1

您可以使用 onTouchEvent() 隐藏软键盘。

@Override
    public boolean onTouchEvent(MotionEvent event) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.
                                                        INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        return true;
    }

希望这会有所帮助。

于 2013-02-07T04:30:23.680 回答