Прибрати клавіатуру при натисканні на вільне місце - stack overflow російською
Мені здається це якийсь нездоровий патерн дій користувача. У Андроїд передбачений спосіб приховування клавіатури натисканням кнопки "Back" або ж в деяких софт-клавіатурах передбачена кнопка приховування клавіатури. Крім того не можна випускати з уваги, що є девайси з хардверних клавіатурами. Так що я б не став заморочуватися таким велосіпедостроітельством. Якщо це ваша особиста ініціатива - забудьте про неї, якщо забаганки замовника, то спробуйте пояснити йому що в екосистемі Андроїда так не прийнято робити - покажіть йому альтернативи. Якщо замовник все одно хоче - встановіть йому клавіатуру з кнопкою приховування. Якщо все одно продовжує наполягати то тоді винаходить велосипед приблизно таким чином:
- Визначте що таке "інше місце екрану"
- У цьому "іншому місці екрану" повісьте лістенер кліка - View.OnClickListener
- За подією кліка прибирайте фокус EditText.clearFocus () або просто приховуйте клаву через getWindow (). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
Проблема тут в тому, що цих "інших місць екрану" може бути занадто багато і при зміні дизайну доведеться знову на них вішати слухачі. Альтернативне рішення таке:
Треба обробляти Activity.onTouchEvent () - він викликається всякий раз коли дотик не було перехоплено ніяким виджетом / в'юшкою. Далі застосовуємо п. 3. Мінус цього рішення в тому, що приховування клави відбуватиметься тільки при торканні порожнього місця в Activity - тобто знову впирається в визначення поняття "іншого місця екрану"