关于android:如何在不单击后退按钮的情况下隐藏键盘

How to hide Keypad without Clicking Back Button

本问题已经有最佳答案,请猛点这里访问。

一旦我完成键盘想要自动隐藏的输入,而不按后退按钮,我就会在应用程序中使用一个editText。有人能帮我吗?


1
2
3
4
5
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

editText.requestFocus();

imm.showSoftInput(editText, 0);

尝试此操作(在EditText中,您应该放置自己的EditText)。


每当输入完成时调用此函数

1
2
3
4
5
6
7
8
9
10
11
12
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
//Hide:
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);

private void hideKeyboard() {  
    // Check if no view has focus:
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}


您应该使用textwatcher知道您何时完成键入,然后您可以隐藏键盘,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editText = (EditText)findViewById(R.id.editText);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if(count == 5){

            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);}

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

}

因此,在这段代码中,键入五个字符后,键盘将自动隐藏。

试试看。


在您的Edittext中尝试此代码,您可以选择自行关闭键盘。

android:imeOptions="actionDone"