Как программно закрыть Android Soft KeyBoard?
В настоящее время я показываю программную клавиатуру, используя следующий код
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.
Ответы
Ответ 1
Я тестировал и это работает:
...
//to show soft keyboard
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
//to hide it, call the method again
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Кстати, второй параметр вашего кода неверен, посмотрите здесь.
Ответ 2
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditTextName.getWindowToken(), 0);
Ответ 3
Используйте этот рабочий код:
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Ответ 4
Если вы хотите, вы можете использовать весь класс и вызвать метод 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);
}
}
}
Ответ 5
user942821 ответ за его скрытие:
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Но это также помогает мне скрыть это:
imm.toggleSoftInput(0, 0);
Вы также можете попробовать:
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
При использовании '0' в первом параметре иногда клавиатура переключается в неправильных местах в странных обстоятельствах, что я еще не смог выяснить, как дублировать. Я все еще тестирую этот последний пример, но обновляюсь, когда узнаю больше.
Подробнее см. страницу документации toggleSoftInput.
Ответ 6
Это прекрасно работает
InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0);
Ответ 7
Закрытие/скрытие Softkey для Android
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
it working for me i hope it work for you..
Откройте Android Soft Keyboard
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
Ответ 8
Вы также можете попробовать
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 9
Вот решение 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);
}
Ответ 10
InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Ответ 11
Для скрытия клавиатуры
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mView.getWindowToken(), 0);
Здесь "mView" может быть любым видом, видимым на экране
Ответ 12
Этот код скрывает клавиатуру внутри 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);
}
Ответ 13
private void close() {
this.requestHideSelf(0);
}
этот метод очень прост