Je montre une zone de saisie en utilisant AlertDialog
. L' EditText
intérieur de la boîte de dialogue se concentre automatiquement lorsque j'appelle AlertDialog.show()
, mais le clavier virtuel n'est pas automatiquement affiché.
Comment afficher automatiquement le clavier virtuel lorsque la boîte de dialogue s'affiche? (et il n'y a pas de clavier physique / matériel). Comme lorsque j'appuie sur le bouton Rechercher pour appeler la recherche globale, le clavier virtuel s'affiche automatiquement.
android
keyboard
android-edittext
soft-keyboard
Randy Sugianto «Yuku»
la source
la source
Réponses:
Vous pouvez créer un auditeur de se concentrer sur le
EditText
leAlertDialog
, puis obtenir leAlertDialog
« sWindow
. De là, vous pouvez faire apparaître le clavier virtuel en appelantsetSoftInputMode
.la source
final AlertDialog dialog = builder.create()
puisshow
sur la boîte de dialogue au lieu du générateur.Pour afficher l'utilisation du clavier:
Pour masquer l'utilisation du clavier:
la source
Vous pouvez demander un clavier logiciel juste après avoir créé la boîte de dialogue (test sur SDK - r20)
la source
J'ai eu le même problème et l'ai résolu avec le code suivant. Je ne sais pas comment il se comportera sur un téléphone avec clavier matériel.
la source
J'ai trouvé cet exemple http://android-codes-examples.blogspot.com/2011/11/show-or-hide-soft-keyboard-on-opening.html . Ajoutez le code suivant juste avant
alert.show()
.la source
ou
la source
stateHidden
et lorsque je détecte que l'utilisateur crée un nouvel élément, j'ai affiché le clavier en utilisant la ligne de code que vous avez mentionnée. :) Encore une fois merci.((Activity) context).getWindow()....
.Les extraits de code d'autres réponses fonctionnent, mais il n'est pas toujours évident de les placer dans le code, surtout si vous utilisez un
AlertDialog.Builder
et avez suivi le didacticiel de dialogue officiel car il n'utilise pasfinal AlertDialog ...
oualertDialog.show()
.Est préférable à
Parce que SOFT_INPUT_STATE_ALWAYS_VISIBLE masquera le clavier si le focus s'éloigne de EditText, où SHOW_FORCED gardera le clavier affiché jusqu'à ce qu'il soit explicitement fermé, même si l'utilisateur retourne à l'écran d'accueil ou affiche les applications récentes.
Vous trouverez ci-dessous le code de travail d'un AlertDialog créé à l'aide d'une mise en page personnalisée avec un EditText défini en XML. Il définit également le clavier pour avoir une touche "go" et lui permet de déclencher le bouton positif.
alert_dialog.xml:
AlertDialog.java:
la source
Eh bien, c'est un assez vieux post, il y a encore quelque chose à ajouter.
Ce sont 2 méthodes simples qui m'aident à garder le clavier sous contrôle et elles fonctionnent parfaitement:
Afficher le clavier
Masquer le clavier
la source
getCurrentFocus()
?Activity
.Permettez-moi de pointer quelques informations supplémentaires sur la solution de yuku, car j'ai eu du mal à faire fonctionner cela! Comment puis-je obtenir l'objet AlertDialog de mon AlertDialog.Builder? Eh bien, c'est le résultat de mon
alert.show()
exécution:la source
Jetez un œil à cette discussion qui gère le masquage et l'affichage manuels de l'IME. Cependant, mon sentiment est que si un focus
EditText
ne fait pas monter l'IME, c'est parce que vous appelezAlertDialog.show()
votreOnCreate()
ou une autre méthode qui est évoquée avant que l'écran ne soit réellement présenté. Le déplacerOnPostResume()
devrait le corriger dans ce cas, je crois.la source
Oui, vous pouvez le faire,
setOnFocusChangeListener
cela vous aidera.la source
Je sais que cette question est ancienne car je pense que l'utilisation d'une fonction d'extension est un plus joli moyen d'afficher le clavier pour un texte d'édition
voici la méthode que j'utilise pour montrer le clavier pour un edittext.
code kotlin: il suffit d'appeler
edittext.showKeyboard()
le code java:
la source
Si quelqu'un reçoit:
Essayez d'ajouter du contexte à l'appel getSystemService.
Alors
la source
La question d'origine concerne les dialogues et mon EditText est sur une vue régulière. Quoi qu'il en soit, je pense que cela devrait aussi fonctionner pour la plupart d'entre vous. Voici donc ce qui fonctionne pour moi (la méthode la plus élevée suggérée ci-dessus n'a rien fait pour moi). Voici un EditView personnalisé qui fait cela (le sous-classement n'est pas nécessaire, mais je l'ai trouvé pratique pour mes besoins car je voulais également saisir le focus lorsque la vue devient visible).
C'est en fait largement le même que la réponse des tidbecks. En fait, je n'ai pas du tout remarqué sa réponse car il n'y avait aucun vote. Ensuite, j'étais sur le point de commenter son post, mais cela aurait été trop long, j'ai donc fini de faire ce post de toute façon. tidbeck souligne qu'il ne sait pas comment cela fonctionne avec les appareils dotés de claviers. Je peux confirmer que le comportement semble être exactement le même dans les deux cas. Cela étant, en mode portrait, le clavier du logiciel apparaît et en paysage, il ne le fait pas. Avoir le clavier physique glissé ou non ne fait aucune différence sur mon téléphone.
Parce que, personnellement, je trouve le comportement un peu bizarre j'ai opté pour l' utilisation:
InputMethodManager.SHOW_FORCED
. Cela fonctionne comme je le voulais. Le clavier devient visible quelle que soit l'orientation, cependant, au moins sur mon appareil, il ne s'affiche pas si le clavier matériel a été glissé.la source
Le problème semble être que puisque l'endroit où vous entrez du texte est initialement caché (ou imbriqué ou quelque chose), AlertDialog définit automatiquement le drapeau
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
ouWindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
pour que les choses ne déclenchent pas une entrée logicielle à afficher.La façon de résoudre ce problème consiste à ajouter ce qui suit:
la source
essayez et utilisez:
la source
Pour montrer le clavier, pour moi, je devais faire ce qui suit
Android TextField: définissez le focus + la saisie logicielle par programmation
La solution est essentiellement la suivante
Où
ShowKeyboard
estAprès une entrée réussie, je m'assure également de cacher le clavier
la source
Mettez ces méthodes dans votre classe Util et utilisez-les n'importe où.
Kotlin
Java
la source
J'ai créé de jolies fonctions d'extension kotlin-esqe au cas où quiconque serait intéressé
la source
C'est un bon échantillon pour vous:
la source
Pourquoi cette réponse - Parce que la solution ci-dessus montrera votre clavier mais elle ne disparaîtra pas si vous cliquez ailleurs
EditText
. Vous devez donc faire quelque chose pour faire disparaître le clavier lorsque vous perdez leEditText
focus.Vous pouvez y parvenir en procédant comme suit:
Rendre la vue parent (vue de contenu de votre activité) cliquable et focalisable en ajoutant les attributs suivants
Implémenter une méthode hideKeyboard ()
Enfin, définissez le onFocusChangeListener de votre edittext.
la source
C'est un peu délicat. Je l'ai fait de cette façon et cela a fonctionné.
1.Au premier appel pour masquer l'entrée logicielle de la fenêtre. Cela masquera l'entrée logicielle si le clavier logiciel est visible ou ne fera rien s'il ne l'est pas.
2.Affichez votre dialogue
3.Appelez ensuite simplement pour basculer la saisie logicielle.
code:
la source
Essaye ça
la source
J'ai essayé beaucoup mais c'est ce qui a fonctionné pour moi (kotlin):
la source
En regardant https://stackoverflow.com/a/39144104/2914140 j'ai simplifié un peu:
C'est mieux que https://stackoverflow.com/a/11155404/2914140 :
car lorsque vous appuyez sur le bouton Accueil et passez à l'écran d'accueil, le clavier reste ouvert.
la source
J'appelle cela dans onCreate () pour afficher automatiquement le clavier lorsque je suis entré dans l'activité.
la source