如何在EditText聚焦时禁用键盘显示?

时间:2014-12-20 13:55:37

标签: android android-softkeyboard

需要打开附加到一个视图的键盘并将键事件委托给edittext,但是在聚焦时不需要将键盘附加到EditText。我试过这段代码:

清单中的

<activity android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />

InputMethodManager inputMethodManager = (InputMethodManager) rootView.getContext()
                                   .getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_FORCED);

view.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View view, int keycode, KeyEvent keyEvent) {
        switch (keyEvent.getAction()){
            case KeyEvent.ACTION_UP:
                editText.onKeyUp(keycode, keyEvent);
                break;
            case KeyEvent.ACTION_DOWN:
                editText.onKeyDown(keycode, keyEvent);
                break;
        }
        return true;
    }
});

一切正常(键盘正在显示),但是当edittext获得焦点时 - 所有逻辑都被破坏(keybord在edittext上重新显示);

editext.requestFocus();

专注于编辑处理选择所需的文本以及其他依赖于焦点的事物。

任何帮助对我都很重要,谢谢你;

更新 无需隐藏键盘,所需的步骤:

  1. 键盘已打开并附加到某些视图
  2. 编辑文字会获得焦点,但键盘没有显示

2 个答案:

答案 0 :(得分:2)

如果这是您正在使用的活动,您可以使用清单中的以下行来隐藏创建时的键盘。

        <activity
        android:name=".YourActivityName"
        android:windowSoftInputMode="stateHidden"></activity>

答案 1 :(得分:1)

创建一个函数:

/* Hides keyboard, if diaplayed */
public void hideKeyboard(){
    View currentFocus = MainAcitivty.this.getCurrentFocus();    // Change the name according to your activity's name.
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(MainActivity.this.INPUT_METHOD_SERVICE);
    if(currentFocus != null){
        inputMethodManager.hideSoftInputFromWindow(currentFocus.getWindowToken(),0);
        currentFocus.clearFocus();
    }
}

并从您想要隐藏键盘的地方调用上述功能。

希望这会有所帮助......