2016-03-03 26 views
6

Voglio cercare con la mia tastiera personalizzata Android con il tasto Invio, ma non funziona.
Ho già mappato i tasti, ho solo bisogno di attivare la "azione di ricerca" su un campo di testo di ricerca, proprio come la ricerca su google.Come cercare con tasto invio su Android personalizzato InputMethodService?

Ho provato questo codice per innescare l'azione di ricerca, ma non funziona:

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 

Ecco il mio metodo per sovrascrivere l'evento tasto Invio:

public class Keyboard extends InputMethodService 
    implements KeyboardView.OnKeyboardActionListener { 

@Override 
public void onStartInputView(EditorInfo info, boolean restarting) { 
    super.onStartInputView(info, restarting); 

    setInputView(onCreateInputView()); 

    switch (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION) { 

     case EditorInfo.IME_ACTION_SEARCH: 
      Toast.makeText(this, "test", Toast.LENGTH_SHORT).show(); 
      //Action Search 
      break; 
    } 
} 

mio layout XML :

<?xml version="1.0" encoding="UTF-8"?> 
<android.inputmethodservice.KeyboardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/keyboard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:keyPreviewHeight="60dp" 
    android:keyPreviewOffset="12dp" 
    android:keyPreviewLayout="@layout/preview" 
    android:visibility="visible"/> 

non ho alcun EditText nel mio layout per impostare android:imeOptions="actionSearch".

risposta

1

È necessario mappare le chiavi e sovrascrivere il tasto Invio, quindi inserire il codice di ricerca all'interno.

@Override 
public void onKey(int primaryCode, int[] keyCodes) {  
    switch(primaryCode){ 

     case android.inputmethodservice.Keyboard.KEYCODE_DONE: 
      ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 
      break; 
    break; 
    } 
} 

Nel caso in cui non si dispone di keyCode personalizzato è possibile vedere alcuni here e here.

+0

Grazie. per favore aiutami a fare il codice di ricerca – John

+0

Bene, cosa vuoi cercare? Qual è il contesto? Cosa hai fatto fino ad ora? Penso che sia meglio aprire una nuova domanda incentrando solo il codice di ricerca e spiegando, o se la tua intenzione in questa domanda era di ottenere aiuto per il codice di ricerca e non per la tastiera, modifica la domanda e spiega meglio. –

+1

ho modificato la tua risposta. per esempio voglio cercare nella casella di ricerca di Google Play App Store, quando digito una parola e premere il tasto Invio nella mia tastiera personalizzata. il codice che ho digitato non ha funzionato. Mi potete aiutare? grazie – John

1

provare il suo codice

public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // If the event is a key-down event on the "enter" button 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) 
        && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       // do ur stuff 
       return true; 
      } 
      return false; 
     } 
    }); 
Problemi correlati