Android会在关闭焦点时隐藏键盘,但在选择密码字段时则不会

时间:2013-02-07 03:02:47

标签: java android

下面的代码在我将焦点转移到另一个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);
                    }
                }
            }
        }));

1 个答案:

答案 0 :(得分:1)

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

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

希望这会有所帮助。