2010-07-08 6 views
301

Je ne peux pas comprendre cela. Certaines applications ont un EditText (zone de texte) qui, lorsque vous le touchez et qu'il affiche le clavier à l'écran, le clavier a un bouton "Rechercher" au lieu d'une touche d'entrée.Android: comment faire entrer le clavier bouton dire "Rechercher" et gérer son clic?

Je veux implémenter ceci. Comment puis-je implémenter ce bouton de recherche et détecter une pression sur le bouton Rechercher?

Modifier: trouvé comment implémenter le bouton Rechercher; en XML, android:imeOptions="actionSearch" ou en Java, EditTextSample.setImeOptions(EditorInfo.IME_ACTION_SEARCH);. Mais comment puis-je gérer l'utilisateur en appuyant sur ce bouton de recherche? Est-ce que cela a quelque chose à voir avec ?

+2

Notez que imeOptions peut ne pas fonctionner sur certains périphériques. Voir [this] (http://stackoverflow.com/questions/4470018/alternative-of-action-done-button-in-htc-desire) et [this] (http://stackoverflow.com/questions/3886677/ imeoptions-on-htc-devices). – Ermolai

Répondre

745

Dans la mise en page, définissez les options de méthode de saisie à rechercher.

<EditText 
    android:imeOptions="actionSearch" 
    android:inputType="text" /> 

Dans le java, ajoutez l'écouteur d'action de l'éditeur.

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
      performSearch(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

que se passe-t-il si nous voulons obtenir les clés sur lesquelles l'utilisateur clique, comme a, b, c? – ozmank

+72

Sur os 2.3.6 cela ne fonctionne pas jusqu'à ce que je mette android: inputType = attribut "text". – thanhbinh84

+0

Les deux TextView ne devraient-ils pas dire EditText à la place? – Carol

3

Dans le fichier xml, mis imeOptions="actionSearch" et inputType="text", maxLines="1":

<EditText 
    android:id="@+id/search_box" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/search" 
    android:imeOptions="actionSearch" 
    android:inputType="text" 
    android:maxLines="1" /> 
5

Masquer le clavier lorsque l'utilisateur clique sur la recherche. Ajout à Robby Pond answer

private void performSearch() { 
    editText.clearFocus(); 
    InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); 
    ...perform search 
} 
Questions connexes