para - programacion android pdf 2018
Búsqueda de Android: personalizar diseño de sugerencias (3)
He estado siguiendo las instrucciones here para SearchView y las implementaciones de diálogo. Ambos son visibles a continuación. Hay muchas preguntas sobre SO que se centran en la personalización del cuadro de búsqueda, pero pocas son sobre la personalización de la interfaz de usuario de las sugerencias. (Los que sí lo hacen son sobre el color / fuente, los valores predeterminados que están bien para mí). Me gustaría poder ampliar las sugerencias para ocupar todo el ancho de la pantalla. ¿Hay alguna forma de personalizar el ancho utilizando el diálogo o las implementaciones de SearchView? Prefiero no usar una biblioteca a menos que esa sea la única opción. Si esto es posible o más fácil con una de las implementaciones, está bien.
Paso 1
Simplemente cree un diseño con un RecyclerView
o una lista expandible o una lista que desee utilizar.
Paso 2
En tu actividad ( CityActivity
) necesitas hacer esto:
- Crea un manejador como este:
private static class SearchHandler extends Handler {
private WeakReference<CityActivity> mTarget;
SearchHandler(CityActivity target) {
mTarget = new WeakReference<>(target);
}
public void setTarget(CityActivity target) {
mTarget.clear();
mTarget = new WeakReference<>(target);
}
@Override
public void handleMessage(final Message msg) {
if (msg.what == CityActivity.TRIGGER_SEARCH) {
CityActivity activity = mTarget.get();
activity.makeRequest(mSearchText.trim());
}
}
}
- ponga un
TextChangeListener
en susearchEditText
:
public void setTextChangeListener() {
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mSearchText = searchView.getText().toString();
if (!mSearchText.trim().isEmpty()) {
handler.removeMessages(CitySelectionActivity.TRIGGER_SEARCH);
handler.sendEmptyMessageDelayed(CityActivity.TRIGGER_SEARCH,
CityActivity.SEARCH_TRIGGER_DELAY_IN_MS);
} else {
suggestList.clear();
fillAnything();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
Aquí suggestList
son los datos que se dan a su lista de
Debe crear una actividad para los resultados de búsqueda y escribir un archivo xml de diseño donde la vista de lista o el recyclerview rellenen el ancho utilizando el valor match_parent. El contenido debe ser resultados de búsqueda en el adaptador.
Here está el repositorio que elige el lugar de la búsqueda de direcciones de Google. Tiene implementación de lista de búsqueda de pantalla completa.
Searchview personalizado