Я хочу автоматически показывать программную клавиатуру, когда EditText
она сфокусирована (если на устройстве нет физической клавиатуры), и у меня есть две проблемы:
Когда
Activity
отображается my, myEditText
фокусируется, но клавиатура не отображается, мне нужно снова нажать на нее, чтобы отобразить клавиатуру (она должна отображаться, когда отображается myActivity
).И когда я нажимаю «Готово» на клавиатуре, клавиатура исчезает, но
EditText
остается в фокусе, и вы не хотите (потому что мое редактирование завершено).
Чтобы возобновить, моя проблема состоит в том, чтобы иметь что-то более похожее на iPhone: которое синхронизирует клавиатуру с моим EditText
состоянием (сфокусировано / не сфокусировано) и, конечно, не предоставляет программную клавиатуру, если есть физическая.
источник
Ответы:
Чтобы заставить программную клавиатуру появляться, вы можете использовать
А для снятия фокуса
EditText
, к сожалению, вам нужен манекен,View
чтобы захватить фокус.надеюсь, это поможет
Чтобы закрыть его вы можете использовать
Это работает для использования в диалоге
источник
yourEditText.requestFocus()
описанным здесь: stackoverflow.com/questions/8991522/…У меня такая же проблема. Сразу после изменения editText VISIBILITY с GONE на VISIBLE мне пришлось установить фокус и отобразить экранную клавиатуру. Я добился этого, используя следующий код:
Это работает для меня с задержкой 100 мс, но не удалось без задержки или только с задержкой 1 мс.
Комментируемая часть кода демонстрирует другой подход, который работает только на некоторых устройствах. Я тестировал на версиях ОС 2.2 (эмулятор), 2.2.1 (реальное устройство) и 1.6 (эмулятор).
Такой подход спас мне много боли.
источник
EditText
. Для других, читающих это, вместо создания новогоHandler
вы также можете использоватьView.postDelayed()
метод на самомyourEditText
виджете.Чтобы вызвать появление клавиатуры, используйте
Этот метод более надежен, чем прямой вызов InputMethodManager.
Чтобы закрыть его, используйте
источник
InputMethodManager
? (С одной стороны, это не работает, в отличие от решения Раукодрауга.)Когда больше ничего не работает, вынудите это показать :
А потом, если вы хотите закрыть его, например, в onPause (), вы можете вызвать:
источник
Следующий код разграблен из исходного кода Google 4.1 для SearchView. Кажется, работает, хорошо на меньших версиях Android, а также.
Затем, кроме того, следующий код должен быть добавлен при создании элемента управления / действия. (В моем случае это сложный контроль, а не деятельность).
источник
setImeVisibility(hasFocus)
?android:windowSoftInputMode="stateAlwaysVisible"
-> в файле манифеста.edittext.requestFocus();
-> в коде.Это откроет программную клавиатуру, на которой текст редактирования имеет фокус запроса, когда появляется активность.
источник
manifest
!Мне немного повезло в некоторых простых случаях с кодом ниже. Я не закончил все испытания, но ....
И Presto клавиатура обнаруживается.
источник
Вы можете попробовать заставить программную клавиатуру появляться, у меня она работает:
источник
Иногда ответ Раукодрауга не работает. Я сделал это таким образом с некоторыми пробами и ошибками:
И часть EditText :
источник
Чтобы скрыть клавиатуру, используйте эту:
и показать клавиатуру:
источник
onStart()
и использоватьgetDialog().getWindow()
в качестве альтернативыgetActivity().getWindow()
.А для Kotlin просто используйте следующие расширения:
источник
Для фрагмента, убедитесь, что он работает:
источник
showSoftInput
не работал на меня вообще.Я решил, что мне нужно установить режим ввода: (здесь, в компоненте Activity в манифесте)
источник
Поверьте или нет, моя проблема с Soft Keyboard была решена, когда я обнаружил, что анимация Activity может отключить Soft Keyboard. Когда вы называете намерение с
а также
Он может скрывать мягкую клавиатуру, и нет способа показать это.
источник
У меня была одна и та же проблема в разных ситуациях, и решения, которые я нашел, работали в некоторых, но не работали в других, поэтому вот комбинированное решение, которое работает в большинстве ситуаций, которые я нашел:
источник
источник
Я объединил все здесь и для меня это работает:
источник
Это сработало для меня. Вы можете попробовать это также показать клавиатуру:
источник
фрагмент кода. , ,
источник
Kotlin
расширение для отображения клавиатуры в фокусе.Это комбинация предыдущих ответов, которые либо слишком длинные, либо неполные.
Это расширение публикует исполняемый файл в очереди сообщений, который показывает программную клавиатуру после запроса фокуса:
Позвоните в любое удобное для вас время:
источник
просто добавьте android: windowSoftInputMode = "stateHidden" в файле манифеста ...
источник
источник
Внутри вашего манифеста:
android:windowSoftInputMode="stateAlwaysVisible"
- изначально запущенная клавиатура.android:windowSoftInputMode="stateAlwaysHidden"
изначально скрытая клавиатура.Мне также нравится использовать,
"adjustPan"
потому что, когда клавиатура запускается, экран автоматически настраивается.источник
Просто добавьте эту строку в ваше представление EditText:
и TADA - клавиатура стала появляться автоматически!
У меня была похожая проблема, и я обнаружил это простое и странное решение.
Как уже упоминалось здесь пользователем3392439, появление клавиатуры в фокусе как-то странно связано с присутствием компонента прокрутки в файле XML.
Даже наличие другого представления EditText, которое содержит вышеупомянутую строку в том же XML, приводит к тому, что клавиатура появляется независимо от того, какой из EditTexts в данный момент сфокусирован.
Если у вас есть хотя бы одно видимое представление, содержащее компонент прокрутки в вашем XML-файле - клавиатура автоматически появится в фокусе.
Если прокрутки нет - вам нужно нажать на EditText, чтобы появилась клавиатура.
источник
requesFocus()
из обработчика щелчка, и это единственный способ, отличный от явного showSoftInput SHOW_FORCEDВсе решения, указанные выше ( взаимодействие InputMethodManager в OnFocusChangeListener.onFocusChange слушатель, прикрепленный к вашему EditText, работает нормально, если у вас есть одно редактирование в действии .
В моем случае у меня есть две правки.
Я заметил, что onFocusChange запускается для tvX с hasFocus = true (клавиатура показана), но затем для tvY с hasFocus = true (клавиатура скрыта). В конце концов, никакой клавиатуры не было видно.
Общее решение должно иметь правильное утверждение, если «показать клавиатуру, если текст EditText имеет фокус»
источник
В разделе «Активность» onResume () вы можете вызвать метод приноситьKearboard ();
источник
WidgetUtils.showKeyboard
? Это самая важная часть здесь.Ни один из Ответов не работал для меня. Вот простой способ.
Просто отложил метод requestFocus () на 400 мс.
источник
Я обнаружил странное поведение, поскольку в одном из моих приложений программная клавиатура автоматически отображалась при входе в действие (в onCreate есть editText.requestFocus ()).
Покопавшись дальше, я обнаружил, что это потому, что вокруг макета есть ScrollView. Если я удаляю ScrollView, поведение будет таким, как описано в исходной формулировке проблемы: только при нажатии на уже сфокусированный editText отображается программная клавиатура.
Если это не работает для вас, попробуйте добавить ScrollView - это в любом случае безопасно.
источник
У меня была похожая проблема с использованием анимации вида . Поэтому я добавил слушателя анимации, чтобы убедиться, что дождусь окончания анимации, прежде чем запрашивать доступ с клавиатуры к отображаемому тексту редактирования.
источник
Я согласен с raukodraug для этого, используя swithview, вы должны запросить / очистить фокус, как это:
С уважением.
источник