Закрыть виртуальную клавиатуру при нажатии кнопки - PullRequest
128 голосов
/ 03 августа 2010

У меня есть Activity с EditText, кнопкой и ListView. Цель состоит в том, чтобы напечатать экран поиска в EditText, нажать кнопку и получить результаты поиска для заполнения этого списка.

Это все работает отлично, но виртуальная клавиатура ведет себя странно.

Если я нажму EditText, я получу виртуальную клавиатуру. Если я нажму кнопку «Готово» на виртуальной клавиатуре, она исчезнет. Однако, если я нажму кнопку поиска, прежде чем нажать «Готово» на виртуальной клавиатуре, виртуальная клавиатура останется, и я не смогу от нее избавиться. Нажатие кнопки «Готово» не закрывает клавиатуру. Она меняет кнопку «Готово» с «Готово» на стрелку и остается видимой.

Спасибо за вашу помощь

Ответы [ 14 ]

0 голосов
/ 10 августа 2018

Пример Kotlin:

val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager

из фрагмента:

inputMethodManager.hideSoftInputFromWindow(activity?.currentFocus?.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)

из действия:

inputMethodManager.hideSoftInputFromWindow(currentFocus?.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
0 голосов
/ 30 апреля 2017

Исправлена ​​ошибка исключения нулевой точки: у меня был случай, когда клавиатура не открывалась, когда пользователь нажимал кнопку.Вы должны написать оператор if, чтобы убедиться, что getCurrentFocus () не является нулевым:

            InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if(getCurrentFocus() != null) {
            inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
0 голосов
/ 26 октября 2016

Вы используете этот код в событии нажатия кнопки

// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
0 голосов
/ 14 апреля 2016

Если вы установите android:singleLine="true", автоматически кнопка скрывает клавиатуру ¡

...