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) { } }); } |
因此,在这段代码中,键入五个字符后,键盘将自动隐藏。
试试看。
在您的
android:imeOptions="actionDone"