Как программно закрыть Android Soft KeyBoard?

В настоящее время я показываю softkeyboard, используя следующий код

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN); 

И здесь я не связывал программную клавиатуру с Edittext, потому что я использовал приведенный выше код.

Теперь я хочу закрыть SoftKeyboard, поэтому в настоящее время я использую код ниже, но он не работает.

 imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN); 

Может ли кто-нибудь предложить мне, что использовать для закрытия softKeyboard?


Основываясь на следующем ответе, я хочу, чтобы вы поняли, что я не использую EditText, я использую макет, на котором я хочу показать клавиатуру и скрыть клавиатуру. Я хочу отправить событие клавиатуры клавиатуры в удаленную область bcoz, что я не использовал editText.

Solutions Collecting From Web of "Как программно закрыть Android Soft KeyBoard?"

Я тестировал и это работает:

 ... //to show soft keyboard imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); //to hide it, call the method again imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

Кстати, второй параметр вашего кода неверен, пожалуйста, посмотрите здесь .

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

Используйте этот рабочий код:

 InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

Если вы хотите, вы можете использовать весь класс и вызвать метод KeyboardUtil.hideKeyBoard (контекст) везде, где:

 public class KeyboardUtil { public static void hideKeyboard(Activity activity) { try { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } catch (Exception e) { // Ignore exceptions if any Log.e("KeyBoardUtil", e.toString(), e); } } } 

Ответ пользователя942821 для скрытия работы:

 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

Но это также помогает мне скрыть это:

 imm.toggleSoftInput(0, 0); 

Вы также можете попробовать:

 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); 

При использовании «0» в первом параметре иногда клавиатура переключается в неправильных местах при странных обстоятельствах, что я еще не смог выяснить, как дублировать. Я все еще тестирую этот последний пример, но буду обновлять, когда узнаю больше.

См. Страницу документации toggleSoftInput для получения дополнительной информации.

Это прекрасно работает

 InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0); 

Вы также можете попробовать

 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Вот решение s, которое проверяет, видима ли клавиатура

  public static void hideKeyboard(Activity activity) { if (isKeyboardVisible(activity)) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); } } public static boolean isKeyboardVisible(Activity activity) { ///This method is based on the one described at http://stackoverflow.com/questions/4745988/how-do-i-detect-if-software-keyboard-is-visible-on-android-device Rect r = new Rect(); View contentView = activity.findViewById(android.R.id.content); contentView.getWindowVisibleDisplayFrame(r); int screenHeight = contentView.getRootView().getHeight(); int keypadHeight = screenHeight - r.bottom; return (keypadHeight > screenHeight * 0.15); } 
 InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

Для скрытия клавиатуры,

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

Здесь «mView» может быть любым видом, видимым на экране

Этот код скрывает клавиатуру изнутри onItemClick из AutoCompleteTextView

 public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int indexSelected, long arg3) { // whatever your code does InputMethodManager imm = (InputMethodManager) getSystemService(viewIn.getContext().INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(viewIn.getApplicationWindowToken(), 0); } 
 private void close() { this.requestHideSelf(0); } 

Этот метод очень прост