J'utilise AlertDialog.Builder pour créer une zone de saisie, avec EditText comme méthode d'entrée.
Malheureusement, le clavier virtuel ne s'affiche pas, bien que le EditText soit au point, sauf si vous le touchez à nouveau explicitement.
Y a-t-il un moyen de le forcer à éclater?
J'ai essayé ce qui suit, après le (AlertDialog.Builder) .show (); mais en vain.
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(input, InputMethodManager.SHOW_FORCED);
Quelqu'un peut-il aider?
Merci!!
Réponses:
J'ai fait une telle chose
la source
OnFocusChangeListener
approches me paraissent beaucoup et causent des problèmes. Vous devez créer le àAlertDialog
partir duAlertDialog.Builder
!setSoftInputMode
ligne avantdialog.show()
ou cela ne fonctionnera pas. +1 pour la solution correcte simple btwJ'ai réussi à le résoudre comme ceci:
la source
J'ai découvert que le même code fonctionne correctement sur la tablette, le clavier apparaît, mais sur le téléphone, ce n'est pas le cas, donc la recherche plus approfondie semble indiquer l'option «ajuster».
J'utilise ceci, je me sens beaucoup plus propre.
la source
SOFT_INPUT_STATE_ALWAYS_VISIBLE
. Comme celaSOFT_INPUT_STATE_ALWAYS_VISIBLE
va bloquer les composants de l'interface utilisateur du dialogue, où il estSOFT_INPUT_ADJUST_RESIZE
possible de redimensionner et de «pousser» la boîte de dialogue.Dans mon cas, la seule façon dont j'ai pu afficher le clavier lorsque la boîte de dialogue était affichée était d'ajouter à mon
DialogFragment
:Notez SOFT_INPUT_STATE_ALWAYS_VISIBLE au lieu de SOFT_INPUT_STATE_VISIBLE .
De la documentation:
la source
Lorsque vous appelez showDialog pour afficher un dialogue créé à l'aide d'AlertDialog dans onCreateDialog
Vous devriez mettre le code ici
la source
Une bien meilleure solution est donnée ici .
Aucune solution de contournement.
EditText
se comporte comme prévu.la source
la source
Cela a déjà été répondu ici . L'utilisation d'un OnFocusChangeListener a fonctionné pour moi.
la source
Dans mon cas, le SoftInputMode ne s'affichait pas lorsque je l'ai défini, ce qui était avant d'afficher la boîte de dialogue (après sa création). Le code ci-dessous a fonctionné pour moi où j'ai défini le SoftInputMode après avoir affiché la boîte de dialogue.
Kotlin:
Java:
J'espère que cela aidera tous ceux qui avaient le même problème que moi.
la source
Essayez ça, ça marche pour moi
Si vous souhaitez afficher le clavier virtuel:
Et si vous voulez le cacher:
la source
la source
Ce problème se produit lorsque EditText est ajouté après l'appel d'AlertDialog.onCreate.
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
Vous devez effacer l'indicateur FLAG_ALT_FOCUSABLE_IM.
Étant donné que AlertDialog.show est appelé dans DialogFragment.onStart, vous pouvez insérer le code dans DialogFragment.onStart.
Ou vous pouvez utiliser Dialog.setOnShowListener si vous n'utilisez pas de DialogFragment.
la source