web-dev-qa-db-fra.com

Comment créer un bouton Android EditView 'Terminé') et masquer le clavier lorsque l'utilisateur clique dessus?

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 cacher le clavier. L'utilisateur doit appuyer sur le bouton Précédent pour masquer le clavier.

Existe-t-il un moyen d’afficher un bouton Done sur le clavier pour masquer le clavier?

102
d-man

Utilisez TextView.setImeOptions et transmettez-le actionDone. comme textView.setImeOptions(EditorInfo.IME_ACTION_DONE);

127
dmazzoni

Vous devez d’abord régler le Android:imeOptions attribut égal à actionDone pour votre EditText cible, comme indiqué ci-dessous. Cela changera votre bouton ‘RETOUR’ sur votre clavier logiciel EditText en un bouton ‘DONE’.

<EditText 
    Android:id="@+id/edittext_done"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:hint="Enter some text"
    Android:imeOptions="actionDone"
    />
135
Paresh Mayani

Inclure les deuximeOptionsetsingleLine:

<EditText 
   Android:id="@+id/edittext_done"
   Android:layout_width="fill_parent"
   Android:layout_height="wrap_content"
   Android:imeOptions="actionDone"
   Android:singleLine="true"
   />
81
Oded Breiner
Android:imeActionLabel="Done" 
Android:singleLine="true"

Dans le fichier XML fonctionne très bien. Mais cela entraînera également le editText à continuer à taper sur une seule ligne, ce que vous ne voudrez peut-être pas. Ainsi, ajouter les éléments suivants à votre code vous évitera de tout taper sur une seule ligne.

mainText.setHorizontallyScrolling(false);
mainText.setMaxLines("Maximum integer value that you want to provide");
34
Santosh Pillai

Utilisez ceci:

Android:singleLine="true"
14
Frank Nguyen

Pour obtenir le bouton terminé

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

et

Android:inputType="text" dans le XML

Pour les manipulations effectuées sur un clic du clavier

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE){
                // Your action on done
                return true;
            }
            return false;
        }
    });

`

12
Shangeeth Sivan

Utilisez ces deux lignes pour votre EditText

Android:imeActionLabel="Done"
Android:singleLine="true"

ou vous pouvez le réaliser par programme par cette ligne.

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
10
NarenderNishad

Si la propriété ne change pas pour le widget, il peut être préférable d'utiliser comme Android:imeOptions="actionDone" dans le fichier de présentation xml.

7
Tom

Utilisation:

Android:imeActionLabel="Done"
Android:singleLine="true" 
6
Kiran Mahale

Je dois souligner que beaucoup de gens peuvent lutter sans connaître le problème.

Si vous voulez que le kb se cache lorsque vous cliquez sur Done et que vous définissez Android:imeOptions="actionDone" & Android:maxLines="1"sans définissez votre EditText inputType it PAS fonctionnera comme valeur par défaut inputType pour EditText n'est pas "text" comme beaucoup de gens le pensent.

donc, définir uniquement inputType vous donnera les résultats souhaités peu importe ce que vous définissez comme suit: "text", "number", ... etc. .

5
Muhammed Refaat

ActionDone est utilisé lorsque vous cliquez sur le bouton suivant du clavier pour masquer le temps. Utilisez Edit for Text ou AppcompatEdit.

XML

1.1 Si vous utilisez AppCompatEdittext

    <Android.support.v7.widget.AppCompatEditText
    Android:id="@+id/edittext"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:imeOptions="actionDone"/>

1.2 Si vous utilisez Edittext

    <EditText
    Android:id="@+id/edittext"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:imeOptions="actionDone"/>

Java

EditText edittext= (EditText) findViewById(R.id.edittext);
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE);
5
Raj

Pour le code:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
4
Steven.Nguyen

En fait, vous pouvez définir du texte personnalisé sur ce petit bouton bleu. Dans le fichier XML, utilisez simplement

Android:imeActionLabel="whatever"

sur votre EditText.

Ou dans l'utilisation du fichier Java

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);

J'ai choisi 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 peut être trouvée ici .

Il convient de noter que cela ne fera pas apparaître le texte sur tous les claviers de tous les périphériques. Certains claviers ne prennent pas en charge le texte de ce bouton (par exemple, touche rapide). Et certains appareils ne le supportent pas non plus. Une bonne règle est que si vous voyez du texte déjà sur le bouton, cela changera en tout ce que vous voudriez.

2
Xar E Ahmer