Centre SearchView en la barra de acciones

¿Cómo puedo centrar un ActionView (un SearchView en particular) dentro de una barra de acción?

Como se ve en la aplicación Google Libros:

Aplicación de Google Libros SearchView http://i46.tinypic.com/2z909is.png

Mi configuración de diseño actual ( search_layout.xml ) :

 <?xml version="1.0" encoding="utf-8"?> <SearchView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:queryHint="@string/search_hint" /> 

Mi archivo XML de la barra de acciones ( menu.xml ) :

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:icon="@+android:drawable/ic_menu_search" android:title="@string/search" android:showAsAction="always|collapseActionView" android:id="@+id/searchMenuItem" android:actionLayout="@layout/search_layout" /> </menu> 

¿Hay una manera de imitar el comportamiento del SearchView de los libros?

Una View centrada en la ActionBar no se puede lograr con Action Items en un xml menu , por lo que puedo decir. Sin embargo, puede implementarse estableciendo un diseño personalizado en ActionBar . Un ejemplo básico:

Una Activity :

 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setDisplayShowHomeEnabled(true); actionBar.setCustomView(R.layout.actionbar_layout); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

Donde actionbar_layout es:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <SearchView android:id="@+id/mySearchView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:iconifiedByDefault="false" /> </RelativeLayout> 

Crea esto en una tableta de 7 '':

Introduzca aquí la descripción de la imagen

Tenga en cuenta el atributo iconifiedByDefault establecido en false en SearchView que obliga a que aparezca ampliado y no sólo como un icono. Esto puede requerir que se oculte el software de forma programática o que se abra de forma abierta cuando se inicie la Actividad.

Echa un vistazo aquí . Sólo puedes usar el atributo android: actionViewClass = "android.widget.SearchView", y eso debería funcionar bien (ten en cuenta que puedes obtener una referencia a la searchView en Java y cambiar la pista allí si eso es lo que quieres ).

  • Android - Actionbar Sherlock - Filtro de búsqueda
  • El uso de SearchView con AppCompatActivity genera fallas en la interfaz de usuario
  • Android abs con SearchView, onQueryTextListener no funciona
  • Cambiar TextColor en SearchView mediante la barra de herramientas de Android
  • Barra de Acción Android SearchView as Autocomplete?
  • SearchManager.getSearchableInfo (getComponentName ()) devuelve null
  • Implementación de SearchView en la barra de acción
  • Obtención de excepción de conversión de clase durante el uso de android.support.v7.widget.SearchView
  • SearchView en AppCompat distorsiona el icono
  • Android: no puede encontrar TextView dentro de SearchWidget cuando usa la biblioteca de soporte técnico de Android
  • Configuaration Searchable que devuelve Null para el SearchView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.