Убрать клавиатуру после нажатия Enter

Простой способ убрать клавиатуру в Android. Просто используйте этот класс и вызов Keyboard.hide(view), где view — View с фокусом.

Зачем нужно убирать клавиатуру?

Ну, по умолчанию Android не прячет клавиатуру, когда вы закончили ввод текста в EditText и нажали Enter (Или, тем более, кликнули по кнопке). Клавиатура всплывает сама при фокусировке на EditText. Но убирать её после ввода надо нам — и это правильно, потому что нажатия кнопок и клавиши Enter могут означать не окончание ввода, а какие-то функции по его форматированию или перенос на новую строку (если EditText мультистрочный).

Я использую Keyboard.hide() для однострочных EditText — к примеру, в полях поиска, когда уже совершенно точно ясно, что клавиатура свою роль выполнила и её надо убрать, чтобы освободить место на экране.

2016-05-08-keyboard

убираем клавиатуру при клике по кнопке

Допустим, у нас есть кнопка Enter или Done, которая размещена рядом с EditText. Привязываем к кнопке обычный onClickListener, а в нём реализуем onClick

Убираем клавиатуру при нажатии клавиши enter

Второй пример более продвинутый. Кнопки у нас нет, поле ввода у нас модное и бескнопочное, автоматически обрабатывает набираемый текст по мере его изменения и/или нажатия клавиши Enter на самой клавиатуре.

Чтобы убрать клавиатуру при таком дизайне, надо привязать к EditText свой слушатель для клавиш  и выглядит это так

Отдельно отмечу, что для «живой» обработки набираемого текста — к примеру, для выдачи результатов поиска или подсказок — надо использовать не OnKeyListener, а «слушатель текста» — свой класс, реализованный на TextWatcher. Но это тема уже отдельной беседы.