Как убрать клавиатуру на Android
Обновлено: 21.11.2024
После записи в поле редактирования и нажатия кнопки я хочу скрыть виртуальную клавиатуру при касании вне клавиатуры. Я предполагаю, что это простой фрагмент кода, но где я могу найти его пример?
Что делать, если у вас есть только один EditText и несколько кнопок, таких как флажки и переключатели? Единственное место, где вам нужна клавиатура, находится в единственном EditText. Как вы регистрируетесь, чтобы знать, что было выбрано/нажато что-то еще, чтобы скрыть клавиатуру?
Я чувствую себя глупо. Я не могу скрыть клавиатуру в ICS. Перепробовал здесь все методы и их комбинации. Ни за что. Метод показать это работает, но я не могу скрыть его независимо от того, какой токен окна, скрыть флаги, настройки манифеста или свечи каким-либо святым. При отображении клавиатуры я всегда вижу это: I/LatinIME(396): указан InputType.TYPE_NULL W/LatinIME(396): непредвиденный класс ввода: inputType=0x00000000 imeOptions=0x00000000
По мере увеличения размера и разрешения экрана устройств скрытие виртуальной клавиатуры становится менее важным.
123 Ответы 123
Вы можете заставить Android скрыть виртуальную клавиатуру с помощью InputMethodManager, вызова hideSoftInputFromWindow и передачи маркера окна, содержащего ваш сфокусированный вид.
Это заставит клавиатуру быть скрытой во всех ситуациях. В некоторых случаях вы захотите передать InputMethodManager.HIDE_IMPLICIT_ONLY в качестве второго параметра, чтобы убедиться, что вы скрываете клавиатуру только тогда, когда пользователь явно не заставлял ее появляться (удерживая меню).
Примечание. Если вы хотите сделать это в Kotlin, используйте: context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
Синтаксис Котлина
теперь для getSystemService() требуется Context и класс serviceClass . Для контекста я могу вызвать requiredContext, но как насчет класса обслуживания?
@capo11 Я пробовал с Application.Context.getSystemService(), поэтому мне не нужен класс обслуживания, но он не работает
Чтобы прояснить это безумие, я хотел бы начать с извинений от имени всех пользователей Android за совершенно нелепое обращение Google с программной клавиатурой. Причина, по которой существует так много разных ответов на один и тот же простой вопрос, заключается в том, что этот API, как и многие другие в Android, ужасно спроектирован. Я не могу придумать вежливого способа выразить это.
Я хочу скрыть клавиатуру. Я ожидаю предоставить Android следующий оператор: Keyboard.hide() . Конец. Спасибо большое. Но у Андроида есть проблема. Вы должны использовать InputMethodManager, чтобы скрыть клавиатуру. Хорошо, хорошо, это API Android для клавиатуры. НО! У вас должен быть контекст, чтобы получить доступ к IMM. Теперь у нас есть проблема. Я могу захотеть скрыть клавиатуру от статического или служебного класса, который не использует или не нуждается в каком-либо Context . или И НАМНОГО хуже, IMM требует, чтобы вы указали, от какого вида (или, что еще хуже, от какого окна) вы хотите скрыть клавиатуру.
Вот почему скрыть клавиатуру так сложно. Уважаемый Google: когда я ищу рецепт торта, на Земле нет ни одного поставщика рецептов, который отказался бы предоставить мне рецепт, если я сначала не отвечу, КЕМ будет съеден торт И где он будет съеден !!< /p>
Эта грустная история заканчивается неприглядной правдой: чтобы скрыть клавиатуру Android, вам потребуется предоставить 2 формы идентификации: Контекст и либо Представление, либо Окно .
Я создал статический служебный метод, который может ОЧЕНЬ хорошо выполнять свою работу, если вы вызываете его из Activity .
Имейте в виду, что этот служебный метод работает ТОЛЬКО при вызове из действия! Приведенный выше метод вызывает getCurrentFocus целевого действия, чтобы получить правильный токен окна.
Но предположим, вы хотите скрыть клавиатуру от EditText, размещенного в DialogFragment? Вы не можете использовать описанный выше метод для этого:
Это не сработает, потому что вы будете передавать ссылку на активность хоста фрагмента, которая не будет иметь сфокусированного управления, пока фрагмент отображается! Ух ты! Итак, чтобы скрыть клавиатуру от фрагментов, я прибегаю к более низкоуровневому, более распространенному и уродливому:
Ниже приведена дополнительная информация, полученная в результате потраченного времени на поиски этого решения:
О окнеSoftInputMode
Есть еще один спорный момент, о котором следует помнить. По умолчанию Android автоматически назначит начальный фокус первому EditText или фокусируемому элементу управления в вашей Activity. Отсюда естественно следует, что InputMethod (как правило, программная клавиатура) будет реагировать на событие фокуса, показывая себя. Если атрибут windowSoftInputMode в AndroidManifest.xml имеет значение stateAlwaysHidden , он указывает клавиатуре игнорировать этот автоматически назначенный начальный фокус.
Невероятно, но ничего не делает, чтобы предотвратить открытие клавиатуры при касании элемента управления (если элементу управления не назначен focusable="false" и/или focusableInTouchMode="false").По-видимому, параметр windowSoftInputMode применяется только к автоматическим событиям фокусировки, а не к событиям фокусировки, вызванным событиями касания.
Поэтому stateAlwaysHidden действительно ОЧЕНЬ неудачно назван. Возможно, вместо этого его следует называть ignoreInitialFocus.
ОБНОВЛЕНИЕ: больше способов получить токен окна
Если сфокусированного представления нет (например, это может произойти, если вы только что изменили фрагменты), есть другие представления, которые предоставят полезный маркер окна.
Это альтернативы приведенному выше коду if (view == null) view = new View(activity); Они не относятся явно к вашей деятельности.
Внутри класса фрагмента:
Данный фрагмент фрагмента в качестве параметра:
Начиная с основного содержания:
ОБНОВЛЕНИЕ 2. Снимите фокус, чтобы клавиатура не отображалась снова, если вы открываете приложение в фоновом режиме
Эта незначительная деталь, но которая может быть самой тревожной. Когда вы используете клавиши на клавиатуре телефона, вы слышите тихий шум при наборе текста. Это может быть очень раздражающим с силой. Тем более, что сейчас мы привыкли относительно быстро писать своей клавиатурой, что делает повторение этого звука очень неприятным.
Конечно, вы можете полностью отключить звук телефона, но если вы ожидаете важного звонка, это может быть проблематично.
Вот простой и быстрый урок, объясняющий, как убрать звук, издаваемый при нажатии клавиш на клавиатуре телефона.
Мы объясним вам все возможные методы, чтобы в зависимости от вашей модели и версии Android вы нашли подходящее решение.
После этого урока вы узнаете, как уменьшить шум клавиш при нажатии на них на смартфоне Android.
Если же вас беспокоят вибрации, и вы хотите отключить и их, вот ссылка на это руководство:
Как отключить звук клавиш на клавиатуре Android-смартфона
Существует два разных метода устранения шума, издаваемого клавишами клавиатуры, которые различаются в зависимости от версии Android на вашем телефоне. Обратитесь к правому абзацу в зависимости от версии Android на вашем телефоне.
- Настройки вашего Android-смартфона
- Системы и обновления
На этой странице будет отображаться версия Android, установленная на вашем телефоне. это определит манипуляцию, чтобы отключить звук, который беспокоит вас, когда вы нажимаете кнопки.
Отключить шум клавиатуры в старых версиях Android (Android 6 или младше)
- Перейдите к настройкам вашего Android-смартфона.
- Откройте вкладку "Звук".
- Просто отключите параметр Звук клавиш.
Удаление звука клавиатуры в последних версиях Android (Android 8 и выше)
Если у вас новый смартфон (с Android 8 или более поздней версии), вы можете отключить звук клавиш непосредственно с клавиатуры разговора.
В зависимости от модели вашего смартфона способ может отличаться. Среди этих 2-х методик обязательно есть хотя бы одна, которая сработает, чтобы отключить звук клавиш на вашем Android-смартфоне.
Если у вас возникли проблемы с клавиатурой Android, не стесняйтесь перейти к нашей статье на эту тему, которая ответит на ваши вопросы;
Джо Федева
Джо Федева
штатный писатель
Джо Федева — штатный автор How-To Geek. Он освещает потребительские технологии более десяти лет и ранее работал редактором новостей в XDA Developers. Джо любит все, что связано с технологиями, а также в глубине души заядлый любитель делать что-то своими руками. Он написал тысячи статей, сотни руководств и десятки обзоров. Подробнее.
Большинство клавиатурных приложений имеют легкую вибрацию, также известную как "тактильная обратная связь", чтобы сделать ввод текста на сенсорном экране более тактильным. Если вы не хотите, чтобы ваш Android-телефон вибрировал при каждом касании, эту функцию можно отключить.
Как и во многих других случаях в мире Android, в вашем распоряжении множество различных приложений для клавиатуры. Мы покажем вам, как отключить вибрацию для двух наиболее распространенных клавиатурных приложений — Gboard от Google и стандартной клавиатуры Samsung.
Отключить вибрацию клавиатуры для Gboard
Gboard доступен для всех телефонов и планшетов Android.Возможно, это уже клавиатура по умолчанию на вашем устройстве. Если это не так, вы можете установить ее из Play Store и установить в качестве клавиатуры по умолчанию.
Сначала введите текстовое поле, чтобы открыть клавиатуру Gboard. Оттуда нажмите на значок шестеренки, чтобы открыть настройки приложения.
Далее перейдите в «Настройки».
Прокрутите вниз до раздела "Нажатие клавиши" и отключите "Тактильную обратную связь при нажатии клавиши".
Отключить вибрацию клавиатуры для клавиатуры Samsung
Сначала проведите один раз сверху вниз по экрану устройства Samsung Galaxy и коснитесь значка шестеренки.
Далее перейдите в «Общее управление».
Выберите «Настройки клавиатуры Samsung».
Прокрутите вниз до раздела "Пролистывание, касание и обратная связь".
Выберите «Сенсорный отзыв».
Выключите «Вибрацию».
Все готово! Ваша клавиатура больше не будет вибрировать при каждом нажатии клавиши. Это одна из замечательных особенностей программных клавиатур. Вы получаете гораздо больше возможностей для настройки, чем с физической клавиатурой. Убедитесь, что все именно так, как вы хотите.
- › Как отключить тактильную обратную связь (или «вибрацию при касании») в Android
- › Как установить Google Play Маркет в Windows 11
- › Что означает XD и как вы его используете?
- ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
- › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
- › Как восстановить метки панели задач в Windows 11
- › Почему прозрачные чехлы для телефонов желтеют?
Несколько дней назад, чтобы сделать свое рабочее место более портативным, я купил внешнюю клавиатуру Bluetooth для своего Samsung Note 10.1. Все, что касается внешней клавиатуры, было потрясающим. Но меня постоянно беспокоила виртуальная экранная клавиатура, которая появлялась даже при подключении Bluetooth-клавиатуры.
Чтобы скрыть клавиатуру, достаточно было нажать кнопку, но раздражает то, что она появлялась каждый раз, когда я касался экрана для перемещения курсора. Всего один или два таких раздражающих случая заставили меня засучить рукава и начать искать решение. Как и следовало ожидать, я нашел не одно, а два решения этой проблемы. Вот так.
1. Пустая клавиатура
Самое простое решение вышеуказанной проблемы – приложение для Android под названием Null Keyboard. Приложение устанавливается как клавиатура Android на устройстве, но ничего не делает. Идея заключается в том, что когда вы используете нулевую клавиатуру, на экране не появляется всплывающая клавиатура, даже если вы не используете внешнюю клавиатуру. После того, как вы установили приложение, вам нужно будет активировать его как дополнительную клавиатуру на вашем устройстве.
Чтобы активировать нулевую клавиатуру, откройте Настройки Android и перейдите в раздел Язык и клавиатура. Здесь установите флажок напротив Null Keyboard, чтобы активировать его. Сделав это, всякий раз, когда к планшету подключена внешняя клавиатура и вы находитесь в режиме редактирования, измените метод ввода на нулевую клавиатуру с помощью ящика. Не забудьте вернуться к клавиатуре по умолчанию, которую вы использовали, когда закончите работу с внешней клавиатурой.
Null Keyboard — это лучшее решение, если вы всегда работаете с клавиатурой Bluetooth, так как переключение клавиатуры может вызвать проблемы во время работы. Пока я использовал нулевую клавиатуру, переключиться с Samsung на нулевую клавиатуру было легко с помощью уведомления в ящике. Однако после выбора Null Keyboard возможность быстрого выбора клавиатуры больше не появлялась, и мне пришлось вручную отключить клавиатуру в настройках, чтобы вернуться к экранной клавиатуре по умолчанию.
Полезный совет. Если вы используете приложение Tasker, вы можете использовать его для автоматического переключения метода ввода при подключении внешней клавиатуры.
2. AnySoftKeyboard
Решением вышеупомянутой проблемы является AnySoftKeyboard. Это одна из многих доступных пользовательских экранных клавиатур для Android. Но что хорошо в этой клавиатуре, так это то, что ее можно исправить, чтобы обнаруживать событие нажатия клавиши внешней клавиатуры, чтобы автоматически скрывать экранную клавиатуру. AnySoftKeyboard – потрясающая виртуальная клавиатура для Android, которая намного лучше некоторых стандартных клавиатур Android.
После того, как вы установили и активировали AnySoftKeyboard (ASK), вы можете сразу начать использовать его. Чтобы активировать функцию обнаружения внешней клавиатуры, откройте Настройки Android и перейдите в раздел Язык и клавиатура. Здесь найдите AnySoftKeyboard и нажмите кнопку настроек рядом с ним, чтобы настроить.
В настройках ASK откройте Tweaks и установите флажок Скрыть клавиатуру на физической клавише. После того, как вы активировали эту функцию, всякий раз, когда вы касаетесь экрана для ввода текста, экранная клавиатура по-прежнему будет отображаться, но будет автоматически скрываться при обнаружении события нажатия клавиши на внешней клавиатуре.
Заключение
Поэтому, если вы постоянно используете внешнюю клавиатуру, вам лучше всего подойдет Null Keyboard. Но если вам нужно переключаться между Bluetooth-клавиатурой и экранной клавиатурой, AnySoftKeyboard будет просто отличным вариантом. Думаю, этих двух решений должно быть достаточно, чтобы решить проблемы с внешней клавиатурой в Android.
Последнее обновление: 3 февраля 2022 г.
Вышеупомянутая статья может содержать партнерские ссылки, которые помогают поддерживать Guiding Tech. Однако это не влияет на нашу редакционную честность. Контент остается беспристрастным и аутентичным.
Читайте также: