Скрыть программную клавиатуру на активности без каких-либо операций с клавиатурой - PullRequest
6 голосов
/ 13 октября 2010

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

public static void hideSoftKeyboard (Activity activity, View view) {
  InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

но это не работает, потому что нет соответствующего представления для представления, так как нет представления на экране, который принимает ввод с клавиатуры. Любые предложения о том, как решить эту проблему?

Ответы [ 6 ]

16 голосов
/ 04 ноября 2011

Попробуйте ответ, предоставленный Джо: Остановите EditText, чтобы получить фокус при запуске действия

Поместите это в манифест для вашей деятельности: android:windowSoftInputMode="stateHidden"

Этоэто общий вопрос, и приятно знать, что фреймворк на самом деле прекрасно справляется с этим.

16 голосов
/ 13 октября 2010

Попробуйте это в 3-й строке вашего кода:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

4 голосов
/ 20 сентября 2012
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
4 голосов
/ 27 июня 2012

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

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0 );

0 голосов
/ 11 октября 2018

У меня была похожая проблема при попытке скрыть клавиатуру во время воспроизведения анимации перехода.

Это сработало для меня:

imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(), 0)
0 голосов
/ 22 сентября 2014

Этот метод может помочь вам скрыть клавиатуру в любом случае.Это нормально работает для меня

public void hideKeyboard(Activity activity, View view) {
        if (activity != null ) {

            if(view != null)
            {
                try {
                    InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else
            {
                activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
            }

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...