101 votes

Utiliser la touche "ENTRÉE" sur softkeyboard au lieu de cliquer sur le bouton

Bonjour J'ai cherché EditText et de recherche, Button. Quand je tape le texte recherché, je voudrais utiliser ENTREZ la clé sur softkeyboard à la place de la recherche Button pour activer la fonction de recherche.

Merci pour l'aide à l'avance.

157voto

Nailuj Points 7283

Vous le faites par la fixation d'un OnKeyListener sur votre EditText.

Voici un exemple de partir de mon propre code. J'ai un EditText nommée addCourseText, qui va appeler la fonction addCourseFromTextBox lorsque la touche entrée ou le d-pad est cliqué.

addCourseText = (EditText) findViewById(R.id.clEtAddCourse);
addCourseText.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_DOWN)
        {
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_DPAD_CENTER:
                case KeyEvent.KEYCODE_ENTER:
                    addCourseFromTextBox();
                    return true;
                default:
                    break;
            }
        }
        return false;
    }
});

46voto

tieorange Points 61
<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSend" />

Vous pouvez ensuite écouter appuie sur le bouton d'action par la définition d'un TextView.OnEditorActionListener pour l'EditText élément. À votre écoute, répondre à la appropriée de l'IME l'ID d'action définis dans le EditorInfo classe, comme IME_ACTION_SEND. Par exemple:

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});

Source: https://developer.android.com/intl/ru/training/keyboard-input/style.html

28voto

itemon Points 297

peut-être que vous pourriez ajouter un attribut à votre EditText comme ceci:

android:imeOptions="actionSearch"

5voto

ruyi.zhu Points 31

ajouter un attribut à l'EditText comme android:imeOptions="actionSearch"

c'est la meilleure façon de faire la fonction

et le imeOptions aussi avoir d'autres valeurs comme "go" 、"suivant"、"fait" etc.

0voto

Wojtek Jarosz Points 51

Pour éviter l'accent avancer à la prochaine champ modifiable (si vous en avez un), vous pourriez ignorer la clé-les événements, mais la poignée de la clé des événements. Je préfère aussi de filtrer d'abord sur le mot de code, en supposant que ce serait un peu plus efficace. Par ailleurs, rappelez-vous que le retour à true signifie que vous avez traité l'événement, donc pas d'autre auditeur. De toute façon, voici ma version.

ETFind.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (keyCode ==  KeyEvent.KEYCODE_DPAD_CENTER
        || keyCode ==  KeyEvent.KEYCODE_ENTER) {

            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                // do nothing yet
            } else if (event.getAction() == KeyEvent.ACTION_UP) {
                        findForward();      
            } // is there any other option here?...

            // Regardless of what we did above,
            // we do not want to propagate the Enter key up
            // since it was our task to handle it.
            return true;

        } else {
            // it is not an Enter key - let others handle the event
            return false;
        }
    }

});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X