Usare il tasto "ENTER" sul softkeyboard invece di fare clic sul button

Ciao ho un text di ricerca e text di ricerca. Quando scrivo il text cercato, vorrei utilizzare il tasto ENTER sul softkeyboard invece che il Button di ricerca per triggersre la function di ricerca.

Grazie per l'aiuto in anticipo.

  • Android AsyncTask: avviare nuova attività in onPostExecute ()
  • Controllare se le cuffie sono collegate
  • Imansible trovare il metodo android () per argomenti nel progetto Android Studio
  • Android - fragmentTransaction.replace () non funziona nella libreria di supporto 25.1.0
  • Imansible get il valore JNIEnv * in un context arbitrario
  • L'evento ListView onClick non viene spento con l'indirizzo email Linkified
  • 6 Solutions collect form web for “Usare il tasto "ENTER" sul softkeyboard invece di fare clic sul button”

    Lo fai impostando un OnKeyListener sul tuo EditText .

    Ecco un esempio del mio codice. Ho un EditText denominato addCourseText , che chiamerà la function addCourseFromTextBox quando si fa clic sul tasto enter o sul d-pad.

     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; } }); 

    potrebbe essere che puoi aggiungere un attributo al tuo Strumento di modifica come questo:

     android:imeOptions="actionSearch" 
     <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" /> 

    È quindi ansible ascoltare le presse sul button azione definendo un TextView.OnEditorActionListener per l'elemento EditText. Nel tuo ascoltatore, risponda all'ID di azione IME appropriato definito nella class EditorInfo, ad esempio IME_ACTION_SEND. Per esempio:

     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; } }); 

    Fonte: https://developer.android.com/training/keyboard-input/style.html

    aggiungere un attributo a EditText come android: imeOptions = "actionSearch"

    questo è il modo migliore per eseguire la function

    e le opzioni imeOptions hanno anche altri valori come "go", "next", "done" ecc.

    questo è un esempio di una delle mie app come gestisco

      //searching for the Edit Text in the view final EditText myEditText =(EditText)view.findViewById(R.id.myEditText); myEditText.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) || (keyCode == KeyEvent.KEYCODE_ENTER)) { //do something //true because you handle the event return true; } return false; } }); 

    Per evitare che la messa a fuoco avanzasse al prossimo field modificabile (se ne hai uno), puoi ignorare gli events chiave, ma gestire gli events di accesso rapido. Inoltre preferisco filtrare prima sul keyCode, supponendo che sarebbe marginalmente più efficiente. A proposito, ricordatevi che il return vera significa che hai gestito l'evento, quindi nessun altro ascoltatore desidera. Comunque, ecco la mia versione.

     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; } } }); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.