Je suis en train de EditText
définir la propriété suivante pour que je puisse afficher le bouton Terminé sur le clavier lorsque l'utilisateur clique sur EditText.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Lorsque l'utilisateur clique sur le bouton Terminé sur le clavier de l'écran (fini de taper), je souhaite modifier un RadioButton
état.
Comment puis-je suivre le bouton Terminé lorsqu'il est frappé à partir du clavier à l'écran?
android
android-edittext
ime
d-man
la source
la source
Réponses:
J'ai fini avec une combinaison de réponses de Roberts et de chirags:
Mise à jour: le code ci-dessus activait parfois le rappel deux fois. Au lieu de cela, j'ai opté pour le code suivant, que j'ai obtenu des clients de chat Google:
la source
isPreparedForSending()
et pourquoi la deuxième méthode retournetrue
?Essayez ceci, cela devrait fonctionner pour ce dont vous avez besoin:
la source
<EditText android:imeOptions="actionDone" android:inputType="text"/>
Le code Java est:
la source
Je sais que cette question est ancienne, mais je tiens à souligner ce qui a fonctionné pour moi.
J'ai essayé d'utiliser l'exemple de code du site Web des développeurs Android (illustré ci-dessous), mais cela n'a pas fonctionné. J'ai donc vérifié la classe EditorInfo et j'ai réalisé que la valeur entière IME_ACTION_SEND était spécifiée comme
0x00000004
.Exemple de code des développeurs Android:
Donc, j'ai ajouté la valeur entière à mon
res/values/integers.xml
fichier.Ensuite, j'ai édité mon fichier de mise en page
res/layouts/activity_home.xml
comme suitEt puis, l'exemple de code a fonctionné.
la source
Plus de détails sur la façon de définir OnKeyListener et de lui faire écouter le bouton Terminé.
Ajoutez d'abord OnKeyListener à la section implements de votre classe. Ajoutez ensuite la fonction définie dans l'interface OnKeyListener:
Étant donné un objet EditText:
la source
Alors que la plupart des gens ont répondu directement à la question, je voulais en dire plus sur le concept sous-jacent. Tout d'abord, j'ai été attiré l'attention de l'IME lorsque j'ai créé une activité de connexion par défaut. Il a généré du code pour moi qui comprenait ce qui suit:
Vous devez déjà être familiarisé avec l'attribut inputType. Cela informe simplement Android du type de texte attendu, comme une adresse e-mail, un mot de passe ou un numéro de téléphone. La liste complète des valeurs possibles est disponible ici .
C'était, cependant, l'attribut
imeOptions="actionUnspecified"
dont je ne comprenais pas le but. Android vous permet d'interagir avec le clavier qui apparaît du bas de l'écran lorsque le texte est sélectionné à l'aide deInputMethodManager
. Dans le coin inférieur du clavier, il y a un bouton, généralement il dit "Suivant" ou "Terminé", selon le champ de texte actuel. Android vous permet de personnaliser cela en utilisantandroid:imeOptions
. Vous pouvez spécifier un bouton "Envoyer" ou "Suivant". La liste complète peut être trouvée ici .Avec cela, vous pouvez ensuite écouter les pressions sur le bouton d'action en définissant un
TextView.OnEditorActionListener
pour l'EditText
élément. Comme dans votre exemple:Maintenant, dans mon exemple, j'avais l'
android:imeOptions="actionUnspecified"
attribut. Ceci est utile lorsque vous souhaitez essayer de vous connecter à un utilisateur lorsqu'il appuie sur la touche Entrée. Dans votre activité, vous pouvez détecter cette balise, puis tenter de vous connecter:la source
Merci à chikka.anddev et Alex Cohn à Kotlin c'est:
Ici, je vérifie la
Enter
clé, car elle retourne à laEditorInfo.IME_NULL
place deIME_ACTION_DONE
.Voir aussi Android imeOptions = "actionDone" ne fonctionne pas . Ajoutez
android:singleLine="true"
leEditText
.la source
Solution Kotlin
La façon de base de le gérer dans Kotlin est:
Extension Kotlin
Utilisez ceci pour simplement appeler
edittext.onDone{/*action*/}
votre code principal. Rend votre code beaucoup plus lisible et maintenableN'oubliez pas d'ajouter ces options à votre edittext
la source
setOnEditorActionListener
, cependant. Peut-être que c'est juste une question de paramètres de configuration locaux, mais mon linter veut vraiment, vraiment que j'ajoute uneelse
branche aussi afin d'accepter le "vrai" comme une déclaration de retour de l'auditeur (par opposition auif
-bloc).Si vous utilisez les annotations Android https://github.com/androidannotations/androidannotations
Vous pouvez utiliser l'annotation @EditorAction
la source