当EditText获得焦点时显示键盘,并在失去焦点时隐藏键盘

时间:2015-01-28 12:50:45

标签: android android-ui

问题是自我解释。

当编辑文本获得焦点时显示软键盘,并在失去焦点时隐藏键盘。这是我用过的代码。

this.newTaskTitle = (EditText) taskCreationView.findViewById(R.id.newTaskTitle);
    this.newTaskTitle.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            //Set up input manager
            InputMethodManager keyboardManager = (InputMethodManager) getSystemService(
                    Context.INPUT_METHOD_SERVICE
            );
            if(hasFocus) {
                Log.i(TAG,"hasFocus");
                //Display keyboard
                keyboardManager.showSoftInput(
                        v,
                        InputMethodManager.SHOW_IMPLICIT
                );
            } else {
                Log.i(TAG,"lostFocus");
               //Hide keyboard
                keyboardManager.hideSoftInputFromInputMethod(
                        v.getWindowToken(),
                        0
                );
            }
        }
    });

即使在EditText失去焦点时执行else,也不会隐藏键盘。为什么会这样?

这不是隐藏键盘的正确方法吗?

1 个答案:

答案 0 :(得分:1)

我认为,没有必要设置OnFocusChangeListener。从按钮的onClick调用下面的方法,并在调用此方法后设置您的EditText.On获取焦点软键盘的GONE自动打开。

private  void hideKeyBoard(Context context, EditText editText) {
        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }