Estou usando AlertDialog.Builder para criar uma caixa de entrada, com EditText como método de entrada.
Infelizmente, o teclado virtual não aparece, embora o EditText esteja em foco, a menos que você o toque explicitamente novamente.
Existe uma maneira de forçá-lo a estourar?
Tentei o seguinte, após (AlertDialog.Builder) .show (); mas sem sucesso.
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(input, InputMethodManager.SHOW_FORCED);
Alguém pode ajudar?
Obrigado!!
Respostas:
Eu fiz tal coisa
fonte
OnFocusChangeListener
abordagens parecem muito para mim e causam problemas. Você tem que criarAlertDialog
oAlertDialog.Builder
!setSoftInputMode
linha antesdialog.show()
ou não vai funcionar. 1 para a solução correta simples btwEu consegui resolver assim:
fonte
Descobri que o mesmo código funciona corretamente no Tablet, o teclado aparece, mas no Phone não, então pesquisar mais parece apontar para a opção "ajustar".
Estou usando isso, parece muito mais limpo.
fonte
SOFT_INPUT_STATE_ALWAYS_VISIBLE
. ComoSOFT_INPUT_STATE_ALWAYS_VISIBLE
vai bloquear os componentes da IU da caixa de diálogo, onde éSOFT_INPUT_ADJUST_RESIZE
possível redimensionar e "empurrar" a caixa de diálogo.No meu caso, a única maneira de mostrar o teclado quando a caixa de diálogo foi exibida foi adicionando ao meu
DialogFragment
:Observe o SOFT_INPUT_STATE_ALWAYS_VISIBLE em vez de SOFT_INPUT_STATE_VISIBLE .
Da documentação:
fonte
Quando você chama showDialog para mostrar um diálogo criado usando AlertDialog em onCreateDialog
Você deve colocar o código aqui
fonte
Uma solução muito melhor é fornecida aqui .
Sem solução alternativa.
EditText
se comporta conforme o esperado.fonte
fonte
Isso já foi respondido aqui . Usar um OnFocusChangeListener funcionou para mim.
fonte
No meu caso, o SoftInputMode não estava sendo exibido quando o configurei, antes de mostrar a caixa de diálogo (depois de criá-la). O código a seguir funcionou para mim, onde configurei o SoftInputMode após mostrar a caixa de diálogo.
Kotlin:
Java:
Espero que isso ajude qualquer pessoa que estava tendo o mesmo problema que eu.
fonte
Tente isso, está funcionando para mim
Se você deseja exibir o teclado virtual:
E se você quiser escondê-lo:
fonte
fonte
Esse problema ocorre quando EditText é adicionado depois que AlertDialog.onCreate é chamado.
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
Você precisa limpar o sinalizador FLAG_ALT_FOCUSABLE_IM.
Como AlertDialog.show é chamado no DialogFragment.onStart, você pode inserir o código no DialogFragment.onStart.
Ou você pode usar o Dialog.setOnShowListener se não usar um DialogFragment.
fonte