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?
Utilisez TextView.setImeOptions et transmettez-le actionDone. comme textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
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"
/>
Inclure les deuximeOptions
etsingleLine
:
<EditText
Android:id="@+id/edittext_done"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:imeOptions="actionDone"
Android:singleLine="true"
/>
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");
Utilisez ceci:
Android:singleLine="true"
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;
}
});
`
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);
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
.
Utilisation:
Android:imeActionLabel="Done"
Android:singleLine="true"
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. .
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);
Pour le code:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
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.