Я использую AlertDialog.Builder для создания поля ввода с EditText в качестве метода ввода.
К сожалению, программная клавиатура не появляется, хотя EditText находится в фокусе, если вы явно не коснетесь его снова.
Есть ли способ заставить его лопнуть?
Я пробовал следующее после (AlertDialog.Builder) .show (); но безрезультатно.
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(input, InputMethodManager.SHOW_FORCED);
Кто-нибудь может помочь?
Спасибо!!
Ответы:
Я сделал такую вещь
источник
OnFocusChangeListener
подходы мне кажутся излишне сложными. Вы должны создатьAlertDialog
изAlertDialog.Builder
!setSoftInputMode
линию раньше,dialog.show()
иначе она не сработает. +1 за простое правильное решение, кстатиМне удалось решить это так:
источник
Я обнаружил, что тот же код правильно работает на планшете, клавиатура появляется, но на телефоне нет, поэтому дальнейшие исследования, похоже, указывают на параметр «настроить».
Я использую это, чувствую себя намного чище.
источник
SOFT_INPUT_STATE_ALWAYS_VISIBLE
. AsSOFT_INPUT_STATE_ALWAYS_VISIBLE
будет блокировать компоненты пользовательского интерфейса диалога, гдеSOFT_INPUT_ADJUST_RESIZE
можно изменять размер и «подталкивать» диалог.В моем случае единственный способ показать клавиатуру при отображении диалогового окна - это добавить в мои
DialogFragment
:Обратите внимание на SOFT_INPUT_STATE_ALWAYS_VISIBLE вместо SOFT_INPUT_STATE_VISIBLE .
Из документации:
источник
Когда вы вызываете showDialog, чтобы показать диалог, созданный с помощью AlertDialog в onCreateDialog
Вы должны поместить здесь код
источник
Гораздо лучшее решение дается здесь .
Нет обходного пути.
EditText
ведет себя как положено.источник
источник
Здесь уже был дан ответ . У меня сработало использование OnFocusChangeListener.
источник
В моем случае SoftInputMode не отображался, когда я устанавливал его, который был до отображения диалога (после его создания). Приведенный ниже код работал у меня, где я установил SoftInputMode после отображения диалога.
Котлин:
Ява:
Надеюсь, это поможет всем, у кого была такая же проблема, как и у меня.
источник
Попробуй, это работает для меня
Если вы хотите отобразить программную клавиатуру:
И если вы хотите скрыть это:
источник
источник
Эта проблема возникает, когда EditText добавляется после вызова AlertDialog.onCreate.
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
Вам необходимо снять флаг FLAG_ALT_FOCUSABLE_IM.
Поскольку AlertDialog.show вызывается в DialogFragment.onStart, вы можете вставить код в DialogFragment.onStart.
Или вы можете использовать Dialog.setOnShowListener, если вы не используете DialogFragment.
источник