Как программно закрыть Android Soft KeyBoard? - PullRequest
48 голосов
/ 09 января 2012

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

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, я использую макет, на котором я хочу показать клавиатуру и Скрыть клавиатуру.Я хочу отправить событие клавиатуры в удаленную область, потому что я не использовал editText.

Ответы [ 13 ]

93 голосов
/ 09 января 2012

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

...
//to show soft keyboard
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

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

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

39 голосов
/ 09 января 2012
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditTextName.getWindowToken(), 0);
31 голосов
/ 03 октября 2012

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

InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
9 голосов
/ 03 октября 2012

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

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);
        }
    }
}
3 голосов
/ 16 сентября 2017

Закрыть / скрыть программную клавиатуру Android

View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

it's working for me i hope it's work for you..

Открыть программную клавиатуру Android

 InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (inputMethodManager != null) {
            inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
        }
2 голосов
/ 22 мая 2015

Это отлично работает

InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0);
2 голосов
/ 18 декабря 2013

user942821 ответ за сокрытие работает:

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

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

imm.toggleSoftInput(0, 0);

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

imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);

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

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

0 голосов
/ 30 декабря 2016

Этот код скрывает клавиатуру изнутри 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);
}
0 голосов
/ 22 октября 2016

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

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

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

0 голосов
/ 20 сентября 2016
InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...