En mi aplicación, estoy usando la barra de acciones con una vista de búsqueda personalizada. Quiero utilizar un código personalizado cuando el usuario pulsa el botón Entrar en el campo de búsqueda. Pero no puedo encontrar la manera de captar el momento en que el usuario pulsa el botón Enter en SearchView.Android Crear acción personalizada SearchView Search
Ahora probé varias formas de capturar la acción de búsqueda pero parece que no puedo encontrarla.
Mi botón se define así:
<item
android:id="@+id/action_bar_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="-package-.CustomSearchView"
/>
Con esto pertenece a la clase CustomSearchView:
public class CustomSearchView extends SearchView implements OnClickListener, android.view.View.OnKeyListener{
public CustomSearchView(Context context) {
super(context);
this.setOnSearchClickListener(this);
this.setSubmitButtonEnabled(true);
this.setOnClickListener(this);
this.setOnKeyListener(this);
}
@Override
public void onClick(View v) {
Log.d("SEARCH", "Onclick! " + this.getQuery());
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.d("SEARCH", "Search onkey");
return false;
}
}
Aquí se puede ver que `he intentado 2 enfoques:
- Capture el evento onclick desde el botón de enviar. Eso no funcionó ya que solo se disparó cuando hice clic en el icono de búsqueda para abrir el SearchView.
- Captura de las teclas dentro de SearchView. Eso tampoco funcionó . No obtuve respuesta de ninguna tecla que presioné allí.
¿Alguien tiene alguna manera de realizar una acción de búsqueda personalizada con este SearchView?
ACTUALIZACIÓN:
indicados a continuación por PJL: Usted no necesita un diálogo personalizado para anular este comportamiento. El widget normal de SearchView funcionará bien para esto.
¡Trabaja como un encanto! ¡Gracias por la ayuda! – Bart
Excelente consejo, gracias por salvarme el dolor – Bostone
Impresionante, lo usaré para realizar búsquedas dentro de un Fragmento sin iniciar una Actividad. Con la esperanza de obtener los mejores resultados: D – span