Ancho de la lista de resultados de la búsquedaVer

¿Hay una manera de hacer que la lista de resultados de SearchView ocupe toda la anchura de la pantalla? He intentado usar el diseño personalizado para SearchView, pero esto no cambia el ancho de la lista de resultados de búsqueda. Ver captura de pantalla:

Introduzca aquí la descripción de la imagen

Sí, es posible. Para lograr esto debemos establecer el ancho de todo DropDownView , no sólo para los elementos. Podemos establecerlo llamando setDropDownWidth de AutoCompleteTextView . Pero hay un problema. El ancho de DropDownView y el desplazamiento horizontal se calculan dentro de SearchView cada vez que se cambian sus límites. Para obtener una solución, podemos agregar a SearchView nuestro propio OnLayoutChangeListener donde calculamos y establecemos la altura de DropDownView . El código siguiente está funcionando completamente con AppCompat :

 @Override public boolean onCreateOptionsMenu(Menu menu) { // inflate our menu getMenuInflater().inflate(R.menu.search_menu, menu); // find MenuItem and get SearchView from it MenuItem searchMenuItem = menu.findItem(R.id.search); SearchView searchView = (SearchView) searchMenuItem.getActionView(); // id of AutoCompleteTextView int searchEditTextId = R.id.search_src_text; // for AppCompat // get AutoCompleteTextView from SearchView final AutoCompleteTextView searchEditText = (AutoCompleteTextView) searchView.findViewById(searchEditTextId); final View dropDownAnchor = searchView.findViewById(searchEditText.getDropDownAnchor()); if (dropDownAnchor != null) { dropDownAnchor.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { // calculate width of DropdownView int point[] = new int[2]; dropDownAnchor.getLocationOnScreen(point); // x coordinate of DropDownView int dropDownPadding = point[0] + searchEditText.getDropDownHorizontalOffset(); Rect screenSize = new Rect(); getWindowManager().getDefaultDisplay().getRectSize(screenSize); // screen width int screenWidth = screenSize.width(); // set DropDownView width searchEditText.setDropDownWidth(screenWidth - dropDownPadding * 2); } }); } return super.onCreateOptionsMenu(menu); } 

Si utiliza Holo simplemente cambie la línea int searchEditTextId = R.id.search_src_text; A la siguiente:

 int searchEditTextId = getResources().getIdentifier("android:id/search_src_text", null, null); 

Usted debe conseguir la referencia al objeto de SearchAutoComplete que en mi caso android.support.v7.widget.SearchView que usa, después fijó su tamaño, comprueba por favor mi respuesta aquí:

https://stackoverflow.com/a/43480908/5255624

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.