2
votes

Comment puis-je masquer / désactiver le bouton Terminé sur le clavier logiciel Android?

Je travaille avec l'API Amazon S3.

Problème: travailler avec TextWatcher. Dès que l'utilisateur entre plus de 3 caractères dans l'edittext, l'api est appelée et affiche les résultats correspondants. Le problème commence dès que l'utilisateur a appuyé sur le bouton Terminé / Entrée du clavier logiciel, l'API est appelée à nouveau et la recherche est à nouveau. Puis-je arrêter ce deuxième appel d'une manière ou d'une autre? Merci!


2 commentaires

Avez-vous besoin du bouton Entrée ou est-il possible de le supprimer?


je vous suggère de faire un hack sur l'option ime par programme


5 Réponses :


0
votes

Peut-être pouvez-vous essayer de remplacer la méthode onKeyListener dans votre contrôle, pour le laisser détecter si la touche enfoncée est «entrée» et ajouter le code que vous voulez que votre touche «entrée» fasse?

edittext.setOnKeyListener (nouveau View.OnKeyListener () {


0 commentaires

3
votes

vous pouvez le changer depuis xml:

editText.setImeOptions(EditorInfo.IME_ACTION_NONE);

ou depuis le code:

<EditText
...
android:imeOptions="actionNone"/>

Il supprimera le bouton Terminé chaque fois que l'utilisateur déclenchera le softkeybord


0 commentaires

0
votes

il suffit de gérer le clic terminé et de masquer le clavier virtuel

editText = (EditText) findViewById(R.id.edit_text);

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
           // hide your keyboard here
           try {
                   InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
                   if (inputMethodManager != null && activity.getCurrentFocus() != null) {
             inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
                   }
           } catch (Exception e) {
             e.printStackTrace();
           }
           return true;
        }
        return false;
    }
});


0 commentaires

0
votes

Ajoutez

android:maxLines="1"

à votre xml et le bouton Entrée doit être désactivé.


0 commentaires

0
votes

Vous pouvez faire comme editText.setImeOptions(EditorInfo.IME_ACTION_NONE);

mais cela ne masquera pas la touche Entrée / Suivant


0 commentaires