Lorsque l'utilisateur clique sur le EditView
, Android ouvre le clavier afin que l'utilisateur puisse écrire dans le EditView
.
Le problème est que lorsque l'utilisateur a fini d'écrire, il n'y a aucun moyen de masquer le clavier. L'utilisateur doit appuyer sur le bouton retour pour masquer le clavier.
Existe-t-il un moyen d'afficher un Done
bouton sur le clavier qui masquera le clavier?
Réponses:
Utilisez TextView.setImeOptions et transmettez-le actionDone. comme
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
la source
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
pour que cela fonctionne par programme.Vous devez d'abord définir l'
android:imeOptions
attribut égal àactionDone
pour votre EditText cible comme indiqué ci-dessous. Cela changera votre bouton 'RETURN' dans le clavier virtuel de votre EditText en un bouton 'DONE'.la source
android:singleLine="true"
pour que cela fonctionne via xmlIncluez à la fois
imeOptions
etsingleLine
:la source
Dans le fichier XML fonctionne très bien. Mais cela amènera également le
editText
à continuer à taper sur une seule ligne, ce que vous ne voudrez peut-être pas. Donc, ajouter le suivi à votre code vous assurera que vous ne finirez pas par tout taper sur une seule ligne.la source
Pour obtenir le bouton Terminé
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
et
android:inputType="text"
dans le xmlPour la manipulation après avoir cliqué sur le clavier
»
la source
Utilisez ceci:
la source
actionDone
en y ayant également, juste au cas où certains appareils réagiraient différemment.Utilisez ces deux lignes pour votre
EditText
ou vous pouvez le réaliser par programmation par cette ligne.
la source
Si la propriété ne change pas pour le widget, il peut être préférable de l'utiliser comme
android:imeOptions="actionDone"
dans lexml
fichier de mise en page .la source
Utilisation:
la source
Pour le code:
la source
ActionDone est utilisé lorsque vous cliquez sur le bouton suivant du clavier pendant lequel le clavier est masqué.Utiliser dans Modifier le texte ou AppcompatEdit
XML
1.1 Si vous utilisez AppCompatEdittext
1.2 Si vous utilisez Edittext
JAVA
la source
Je dois le souligner, car beaucoup de gens peuvent lutter sans connaître le problème.
Si vous voulez que le kb se masque lorsque vous cliquez
Done
, et que vous définissezandroid:imeOptions="actionDone"
etandroid:maxLines="1"
sans définir votre EditText,inputType
cela ne fonctionnera PAS par défautinputType
pour EditText, ce n'est pas ce"text"
que beaucoup de gens pensent.donc, la mise ne
inputType
vous donnera les résultats que vous désirez tout ce que vous définissez comme à"text"
,"number"
... etc.la source
En fait, vous pouvez définir un texte personnalisé sur ce petit bouton bleu. Dans le fichier xml, utilisez simplement
sur votre EditText.
Ou dans l'utilisation du fichier java
Je choisis arbitrairement IME_ACTION_DONE comme exemple de ce qui devrait figurer dans le deuxième paramètre de cette fonction. Une liste complète de ces actions est disponible ici .
Il convient de noter que cela ne fera pas apparaître le texte sur tous les claviers de tous les appareils. Certains claviers ne prennent pas en charge le texte sur ce bouton (par exemple, Swiftkey). Et certains appareils ne le prennent pas en charge non plus. Une bonne règle est que si vous voyez déjà du texte sur le bouton, cela le changera en ce que vous voulez.
la source
Solution Kotlin
Le moyen direct de gérer le clavier masquer + l'action terminée dans Kotlin est:
Extension Kotlin
Utilisez ceci pour appeler
edittext.onDone {/*action*/}
votre code principal. Le rend plus lisible et maintenableExtensions de clavier supplémentaires
Si vous souhaitez plus de façons de simplifier le travail avec le clavier (afficher, fermer, se concentrer): Lisez cet article
la source
utilisez ceci à votre avis
la source
Si vous utilisez
alors vous devez utiliser
alors seulement vous pouvez voir le bouton Action Done dans le clavier.
la source
Si vous ne voulez pas du tout de bouton (par exemple, vous développez une interface graphique pour les personnes aveugles où le tap ne peut pas être positionnel et vous comptez sur des taps simples / doubles / longs):
Ou à Kotlin:
la source