J'ai un EditText. Je veux qu'après avoir tapé du texte, lorsque l'utilisateur appuie sur la touche Done
du clavier logiciel, il devrait directement effectuer une opération de recherche que j'ai également implémentée dans un événement de clic de bouton.
Réponses
Trop de publicités?Essayez ceci
Il fonctionne à la fois pour FAIT y RETURN .
EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| actionId == EditorInfo.IME_ACTION_DONE) {
// Do your action
return true;
}
return false;
}
});
En Kotlin, utilisez
viewBinding.editText.setOnEditorActionListener { view, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
//react to action
}
false
}
Vous pouvez également renvoyer true à l'intérieur des accolades 'if' pour consommer l'événement - de cette façon, le clavier ne s'éteindra pas lorsque vous appuyez sur 'done'.
Vous attrapez le KeyEvent
puis vérifiez son code clé. FLAG_EDITOR_ACTION
est utilisé pour identifier les touches d'entrée qui proviennent d'un EMI dont la touche d'entrée a été automatiquement étiquetée "suivant" ou "terminé".
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
//your code here
Trouver les documents ici .
Deuxième méthode
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
int result = actionId & EditorInfo.IME_MASK_ACTION;
switch(result) {
case EditorInfo.IME_ACTION_DONE:
// done stuff
break;
case EditorInfo.IME_ACTION_NEXT:
// next stuff
break;
}
}
});
Essayez ceci
Cela fonctionnera dans les deux cas, que votre clavier affiche le signe "Entrée" ou le signe "Flèche suivante".
YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
{
//Perform Action here
}
return false;
}
});
Si vous êtes face à une ligne rouge, faites ceci... importez Keyevent et EditorInfo en appuyant sur alt+enter puis toutes les erreurs suppriment il sera correctement.......
1 votes
Meilleure façon de faire avec Kotlin dans ce commentaire : stackoverflow.com/a/48810268/1912924