отключить всплывающую клавиатуру android-studio
У меня есть EdiText в моем проекте, разработанном на android studio .
Мне нужно найти способ отключить клавиатуру, когда я нажимаю на текст редактирования, а это означает, что при нажатии на EditText клавиатура не должна открываться .
5 ответов
Моя веб-страница — это форма с множеством текстовых полей. Я создал свою собственную всплывающую клавиатуру, которая намного меньше, чем iPad, тем самым экономя много экранной недвижимости, особенно в ландшафтном режиме. Моя проблема заключается в том, что когда я выбираю текстовое поле для ввода.
Как отключить программно программную клавиатуру android? Я стараюсь использовать AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audio.setStreamMute(AudioManager.FX_KEY_CLICK, true); Но это не помогает.
Просто отключите его.
Добавьте android:inputType=»none» в свой xml
В вашем коде вам нужно сделать это программно следующим образом: объявите глобальную переменную для InputMethodManager :
В методе onCreate() определите его:
Установите onClickListener на этот текст редактирования внутри onCreate() :
Сделайте это таким образом
Если вы хотите запретить пользователю редактировать текст, вы можете использовать свойство android:enabled=»false» в edittext
Похожие вопросы:
Я портирую существующее приложение QML/C++ в систему Android. Приложение уже работает на планшете Android, но у меня есть проблемы с клавиатурой Android. Поскольку мое приложение QML/C++ реализовало.
Я пытаюсь воссоздать что-то похожее на всплывающую клавиатуру, используемую в safari. Я могу визуально воспроизвести его, поместив панель инструментов поверх моего вида и соответствующих кнопок.
Я сделал клавиатуру для Android, и я хочу отключить клавиатуру Android, чтобы использовать только мою клавиатуру. Как я могу это сделать? спасибо
Моя веб-страница — это форма с множеством текстовых полей. Я создал свою собственную всплывающую клавиатуру, которая намного меньше, чем iPad, тем самым экономя много экранной недвижимости, особенно.
Как отключить программно программную клавиатуру android? Я стараюсь использовать AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);.
Я создаю приложение-калькулятор, где у меня есть edittext, где отображается результат. Я хочу, чтобы данные вводились в текст редактирования только при нажатии цифровых кнопок NOT на клавиатуре.
Я выбрал режим редактирования текста для калькулятора, но хочу отключить всплывающую клавиатуру permanently..how могу ли я просто сделать это.
Я использую timepicker и datepicker в своем приложении. я хочу отключить клавиатуру в обоих случаях. я могу отключить клавиатуру в date picker с помощью приведенного ниже кода.
Я работаю на вкладке android, которая имеет внешнюю клавиатуру. Поэтому мне нужно удалить всплывающую мягкую клавиатуру android в моем приложении. Я перепробовал так много способов сделать это, но.
Источник
как отключить клавиатуру в следующем действии в android studio
у меня были проблемы с клавиатурой . я сделал поисковое действие, и там я вызываю edit text, когда ищу что-либо, и, нажав на этот поиск, клавиатура все еще активируется в другом действии . как я могу это остановить? я слишком старался но мне нужна чья то помощь
3 ответа
Я сделал клавиатуру для Android, и я хочу отключить клавиатуру Android, чтобы использовать только мою клавиатуру. Как я могу это сделать? спасибо
Как отключить программно программную клавиатуру android? Я стараюсь использовать AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audio.setStreamMute(AudioManager.FX_KEY_CLICK, true); Но это не помогает.
напишите это в своем методе web_activity.class onCreate
я надеюсь, что это сработает в вашем случае, спасибо
Вы можете просто добавить это в свою деятельность
попробуйте это в onItemClick до startActivity
Похожие вопросы:
Я построение приложения для Tizen, и я хочу использовать мой собственный jQuery клавиатуру, а не виртуальной программе Tizen это клавиатуры IME. Вопрос в следующем: как я могу отключить виртуальную.
Я портирую существующее приложение QML/C++ в систему Android. Приложение уже работает на планшете Android, но у меня есть проблемы с клавиатурой Android. Поскольку мое приложение QML/C++ реализовало.
Я использую phonegap для разработки веб-приложения для Android, и поскольку у меня будет своя клавиатура в HTML, мне нужно отключить системную клавиатуру android, чтобы она не появлялась, когда.
Я сделал клавиатуру для Android, и я хочу отключить клавиатуру Android, чтобы использовать только мою клавиатуру. Как я могу это сделать? спасибо
Как отключить программно программную клавиатуру android? Я стараюсь использовать AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);.
Я создаю приложение-калькулятор, где у меня есть edittext, где отображается результат. Я хочу, чтобы данные вводились в текст редактирования только при нажатии цифровых кнопок NOT на клавиатуре.
Я использую timepicker и datepicker в своем приложении. я хочу отключить клавиатуру в обоих случаях. я могу отключить клавиатуру в date picker с помощью приведенного ниже кода.
У меня есть EdiText в моем проекте, разработанном на android studio . android:[email protected]+id/Number android:layout_width=match_parent android:layout_height=100dp android:textSize=24dp.
Я занимаюсь разработкой одного приложения и у меня есть кастомные клавиатуры, Мне нужно отключить клавиатуру android по умолчанию от появления, а также курсор должен отображаться, когда мы нажимаем.
Как скрыть клавиатуру в действии и предотвратить ее открытие даже щелчком по редактируемому тексту (программно)? Я УЖЕ ВСЕ РЕШИЛ: Я использовал этот код здесь в событии onCreate.
Источник
Закрыть / скрыть программную клавиатуру Android
У меня есть EditText и Button в моем макете.
После записи в поле редактирования и нажатия на Button , я хочу скрыть виртуальную клавиатуру. Я предполагаю, что это простой кусок кода, но где я могу найти его пример?
86 ответов
Чтобы прояснить это безумие, я хотел бы начать с извинения от имени всех пользователей Android за совершенно нелепое обращение Google с программной клавиатурой. Причина в том, что существует так много разных ответов на один и тот же простой вопрос, потому что этот API, как и многие другие в Android, разработан ужасно. Я не могу придумать никакого вежливого способа заявить об этом.
Я хочу спрятать клавиатуру. Я ожидаю предоставить Android следующее утверждение: Keyboard.hide() . Конец. Большое спасибо. Но у Android есть проблема. Вы должны использовать InputMethodManager чтобы скрыть клавиатуру. Хорошо, хорошо, это Android API для клавиатуры. НО! Вы должны иметь Context , чтобы получить доступ к IMM. Теперь у нас есть проблема. Я могу захотеть скрыть клавиатуру от статического или служебного класса, который не нужен и не нужен для какого-либо Context . или И еще хуже, IMM требует, чтобы вы указали, какой View (или, что еще хуже, Window ) вы хотите скрыть от клавиатуры.
Это то, что делает скрытие клавиатуры таким сложным. Уважаемый Google: Когда я просматриваю рецепт торта, на Земле нет RecipeProvider , который отказался бы предоставить мне этот рецепт, если я сначала не отвечу, КТО будет съеден торт И где он будет съеден !!
Эта печальная история заканчивается уродливой правдой: чтобы скрыть Android клавиатуру, вам будет необходимо предоставить 2 форму идентификации: а Context и либо View или Window .
Я создал метод статической утилиты, который может выполнять работу ОЧЕНЬ надежно, при условии, что вы вызываете его из Activity .
Помните, что этот служебный метод работает ТОЛЬКО при вызове из Activity ! Вышеупомянутый метод вызывает getCurrentFocus целевой Activity чтобы получить правильный маркер окна.
Но предположим, что вы хотите скрыть клавиатуру от EditText размещенного в DialogFragment ? Вы не можете использовать метод выше для этого:
Это не сработает, потому что вы передадите ссылку на Activity узла Fragment , которая не будет иметь сфокусированного контроля, пока отображается Fragment ! Вот Это Да! Итак, чтобы скрыть клавиатуру от фрагментов, я прибегаю к более низкому уровню, более распространенному и более уродливому:
Ниже приведена дополнительная информация, полученная из-за потраченного времени в погоне за этим решением:
О программе windowSoftInputMode
Есть еще одна точка зрения, о которой нужно знать. По умолчанию Android автоматически назначит начальный фокус первому элементу EditText или фокусируемому элементу управления в вашей Activity . Естественно, что InputMethod (обычно это программная клавиатура) будет реагировать на событие фокуса, показывая себя. windowSoftInputMode в AndroidManifest.xml , когда установлено значение stateAlwaysHidden , stateAlwaysHidden клавиатуру игнорировать этот автоматически назначенный начальный фокус.
Почти невероятно, кажется, что он ничего не делает для предотвращения открытия клавиатуры при прикосновении к focusable=»false» управления (если только focusable=»false» и/или focusableInTouchMode=»false» не назначен элемент управления). По-видимому, параметр windowSoftInputMode применяется только к событиям автоматической фокусировки, а не к событиям фокусировки, вызванным событиями касания.
Поэтому stateAlwaysHidden действительно ОЧЕНЬ плохо назван. Возможно, вместо этого следует называть ignoreInitialFocus .
Надеюсь это поможет.
ОБНОВЛЕНИЕ: Больше способов получить жетон окна
Если нет сфокусированного представления (например, это может произойти, если вы только что изменили фрагменты), есть другие представления, которые предоставят полезный маркер окна.
Это альтернативы для приведенного выше кода if (view == null) view = new View(activity); Это не относится явно к вашей деятельности.
Внутри класса фрагмента:
Задан фрагмент fragment в качестве параметра:
Начиная с вашего содержания:
ОБНОВЛЕНИЕ 2: Снимите фокус, чтобы снова не показывать клавиатуру, если вы открываете приложение из фона
Добавьте эту строку в конец метода:
Вы можете заставить Android скрывать виртуальную клавиатуру, используя InputMethodManager, вызывая hideSoftInputFromWindow , передавая токен окна, содержащего ваше сфокусированное представление.
Это заставит клавиатуру быть спрятанной во всех ситуациях. В некоторых случаях вы захотите передать InputMethodManager.HIDE_IMPLICIT_ONLY в качестве второго параметра, чтобы гарантировать, что вы скрываете клавиатуру только тогда, когда пользователь явно не заставлял ее появляться (удерживая меню).
Примечание: если вы хотите сделать это в Kotlin, используйте: context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
Котлин Синтаксис
Также полезно скрывать мягкую клавиатуру:
Это может быть использовано для подавления мягкой клавиатуры до тех пор, пока пользователь не коснется экрана editText.
У меня есть еще одно решение скрыть клавиатуру:
Здесь пропустите HIDE_IMPLICIT_ONLY в позиции showFlag и 0 в позиции hiddenFlag . Он будет принудительно закрывать мягкую клавиатуру.
Решение Meier работает и для меня. В моем случае верхний уровень моего приложения — tabHost, и я хочу скрыть ключевое слово при переключении вкладок — я получаю маркер окна из вида tabHost.
Пожалуйста, попробуйте этот код ниже в onCreate()
Update: Я не знаю, почему это решение больше не работает (я только что тестировал на Android 23). Вместо этого используйте решение Saurabh Pareek. Вот он:
Если все остальные ответы здесь не работают для вас, как вы хотели бы, есть другой способ ручного управления клавиатурой.
Создайте функцию с этим, чтобы управлять некоторыми свойствами EditText :
Затем убедитесь, что в фокусе EditText вы открываете/закрываете клавиатуру:
Теперь, когда вы хотите открыть клавиатуру вручную, выполните следующие действия:
И для закрытия вызова:
Можно также использовать правильные флаги.
Пример реального использования
Короткий ответ
В своем OnClick прослушивающем вызове onEditorAction EditText с IME_ACTION_DONE
Развертка
Я считаю, что этот метод лучше, проще и более согласован с шаблоном проектирования Android. В простом примере выше (и, как правило, в большинстве распространенных случаев) у вас будет EditText , у которого есть/есть фокус, и обычно он обычно вызывал клавиатуру в первую очередь (она, безусловно, может вызывать это во многих распространенных сценариях). Таким же образом, он должен быть тем, кто выпустит клавиатуру, обычно это можно сделать с помощью ImeAction . Просто посмотрите, как ведет себя EditText с android:imeOptions=»actionDone» , вы хотите добиться того же поведения теми же средствами.
из этого поиска, здесь я нашел ответ, который работает для меня
Это должно работать:
Я использую пользовательскую клавиатуру для ввода номера шестнадцатеричного кода, поэтому я не могу отображать клавиатуру IMM.
В v3.2.4_r1 setSoftInputShownOnFocus(boolean show) был добавлен контроль погоды или нет, чтобы отобразить клавиатуру, когда TextView получает фокус, но ее все еще скрыто, поэтому необходимо использовать отражение:
Для более старых версий я получил очень хорошие результаты (но далеки от совершенства) с помощью OnGlobalLayoutListener , добавленного с помощью ViewTreeObserver из моего корневого представления, а затем проверки, отображается ли клавиатура следующим образом:
Это последнее решение может отображать клавиатуру в течение секунды секунды и беспорядок с дескрипторами выделения.
Когда клавиатура входит во весь экран, onGlobalLayout не вызывается. Чтобы избежать этого, используйте TextView # setImeOptions (int) или в XML-декларации TextView:
Обновление: Просто нашел, какие диалоги используют, чтобы никогда не показывать клавиатуру и работать во всех версиях:
В качестве альтернативы все это решение, если вы хотите закрыть мягкую клавиатуру из любого места без ссылки на (EditText) поле, которое использовалось для открытия клавиатуры, но все же хотело сделать это, если поле было сфокусировано, вы могли бы использовать это (из Activity):
Я провел более двух дней, работая над всеми решениями, размещенными в потоке, и обнаружил, что они так или иначе не испытывают недостатка. Мое точное требование состоит в том, чтобы иметь кнопку, которая со 100% -й надежностью покажет или скроет экранную клавиатуру. Когда клавиатура находится в скрытом состоянии, она не должна появляться повторно, независимо от того, какие поля ввода пользователь нажимает. Когда он находится в своем видимом состоянии, клавиатура не должна исчезать независимо от того, какие кнопки пользователь нажимает. Это должно работать на Android 2.2+ вплоть до новейших устройств.
Вы можете увидеть рабочую реализацию этого в моем приложении очистить RPN.
После тестирования многих предложенных ответов на нескольких разных телефонах (включая устройства froyo и gingerbread) стало очевидно, что приложения для Android могут быть надежно:
- Временно скрыть клавиатуру. Он снова появится снова, когда пользователь фокусирует новое текстовое поле.
- Показывать клавиатуру, когда начинается действие и установите флаг в действии, указывающий, что клавиатура должна всегда быть видимым. Этот флаг может быть установлен только в том случае, если инициализируется.
- Отметьте действие, чтобы никогда не показывать или разрешать использование клавиатура. Этот флаг может быть установлен только в том случае, если инициализируется.
Для меня временно скрывать клавиатуру недостаточно. На некоторых устройствах он снова появится, как только будет сфокусировано новое текстовое поле. Поскольку мое приложение использует несколько текстовых полей на одной странице, фокусировка нового текстового поля заставит скрытую клавиатуру снова появляться снова.
К сожалению, пункты 2 и 3 в списке работают только надёжно, когда начинается действие. Как только активность станет видимой, вы не сможете надолго скрыть или показать клавиатуру. Хитрость заключается в том, чтобы фактически перезапустить свою активность, когда пользователь нажимает кнопку переключения клавиатуры. В моем приложении, когда пользователь нажимает кнопку переключения клавиатуры, выполняется следующий код:
Это заставляет текущую активность сохранять свое состояние в Bundle, а затем запускается активность, проходя через логическое значение, указывающее, следует ли показывать или скрывать клавиатуру.
Внутри метода onCreate выполняется следующий код:
Если мягкая клавиатура должна быть показана, то InputMethodManager будет предложено отобразить клавиатуру, и в окне указывается, что мягкий вход всегда отображается. Если мягкая клавиатура должна быть скрыта, то устанавливается WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM.
Этот подход работает надежно на всех устройствах, на которых я тестировал: от 4-летнего телефона HTC, работающего под управлением Android 2.2 до версии 7. 4.2.2. Единственным недостатком такого подхода является то, что вам нужно быть осторожным при обращении с кнопкой «Назад». Поскольку у моего приложения есть только один экран (его калькулятор), я могу переопределить onBackPressed() и вернуться на главный экран устройства.
Источник