2010-07-08 18 views
301

No puedo resolver esto. Algunas aplicaciones tienen un EditText (cuadro de texto) que, cuando lo toca y muestra el teclado en pantalla, el teclado tiene un botón "Buscar" en lugar de una tecla Intro.Android: cómo hacer que el teclado entre en el botón decir "Buscar" y manejar su clic?

Quiero implementar esto. ¿Cómo puedo implementar ese botón de búsqueda y detectar presionar el botón Buscar?

Editar: se ha encontrado cómo implementar el botón Buscar; en XML, android:imeOptions="actionSearch" o en Java, EditTextSample.setImeOptions(EditorInfo.IME_ACTION_SEARCH);. ¿Pero cómo manejo al usuario presionando ese botón de búsqueda? ¿Tiene algo que ver con ?

+2

Tenga en cuenta que imeOptions podría no funcionar en algunos dispositivos. Ver [esto] (http://stackoverflow.com/questions/4470018/alternative-of-action-done-button-in-htc-desire) y [this] (http://stackoverflow.com/questions/3886677/ imeoptions-on-htc-devices). – Ermolai

Respuesta

745

En el diseño establezca las opciones del método de entrada para buscar.

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

En el java, agregue el editor de acción oyente.

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

¿Qué ocurre si queremos obtener las claves en las que el usuario hace clic, como a, b, c? – ozmank

+72

En el sistema operativo 2.3.6 no funciona hasta que puse el atributo android: inputType = "text". – thanhbinh84

+0

¿No deberían ambas textView decir EditText en su lugar? – Carol

3

En xml archivo, poner imeOptions="actionSearch" y 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

Ocultar teclado cuando el usuario hace clic búsqueda. Además de Robby Pond, respuesta

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