Style Android SearchView Desplegable popup

Me gustaría saber cómo el estilo de la lista desplegable popup de la Android 4.0 SearchView ?

Estoy usando el Theme.Sherlock.Light.DarkActionBar , pero no sé cómo el estilo de la búsqueda desplegable en un fondo blanco y un texto negro?

Por alguna razón el uso del tema "searchAutoCompleteTextView" no funcionaba para mí tampoco. Así que lo resolví con el siguiente código al configurar mi SearchView:

Nota: Todo esto se hace con la biblioteca de soporte de Android v7 / AppCompat

 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_menu, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); // Theme the SearchView's AutoCompleteTextView drop down. For some reason this wasn't working in styles.xml SearchAutoComplete autoCompleteTextView = (SearchAutoComplete) searchView.findViewById(R.id.search_src_text); if (autoCompleteTextView != null) { autoCompleteTextView.setDropDownBackgroundResource(R.drawable.abc_search_dropdown_light); } } 

Hay dos recursos desplegables de búsqueda proporcionados por la biblioteca de compatibilidad, son

  • R.drawable.abc_search_dropdown_light (fondo claro)
  • R.drawable.abc_search_dropdown_dark (fondo oscuro)

Hay varios pasos para hacerlo

En primer lugar, es necesario crear una disposición personalizada con cuatro estados, puede hacer referencia a {ABSLibrary} /res/drawable/abs__list_selector_holo_dark.xml. Será algo como esto:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@android:color/transparent" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_disabled_holo_dark" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/abs__list_selector_disabled_holo_dark" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_dark" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_dark" /> <item android:state_focused="true" android:drawable="@drawable/abs__list_focused_holo" /> 

Guarde la costumbre dibujable arriba (formato .xml) en su propio proyecto res / drawable. Edite los estilos en consecuencia haciendo referencia a la muestra anterior. Observe por favor que el estilo pudo ser anidado profundamente, apenas sea paciencia que mira abajo del árbol.

A continuación, cree (o ponga en el tema personalizado existente) un tema personalizado con lo siguiente, debe guardarse como res / values ​​/ styles.xml:

 <style name="Theme.MyCustomTheme" parent="Theme.Sherlock.Light.DarkActionBar"> <item name="searchAutoCompleteTextView">@style/MySearchAutoCompleteTextView</item></style> <style name="MySearchAutoCompleteTextView" parent="Sherlock.__Widget.SearchAutoCompleteTextView"> <item name="android:dropDownSelector">@drawable/myCustomDrawable_DropDown</item> <item name="android:popupBackground">@drawable/myCustomDrawable_popupBackground</item></style> 

Tenga en cuenta que el "myCustomDrawable_DropDown" y "myCustomDrawable_popupBackground" tiene que ser el nombre del dibujo personalizado que acaba de crear.

Sólo tienes que saber que el "android: dropDownSelector" y / o "android: popupBackground" son los que son responsables de la tematización de la ventana emergente de autocompletar.

¡Finalmente , aplique el tema en su Manifiesto!

 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.MyCustomTheme" > ... 
  • Ningún clic cuando se llama playSoundEffect
  • Widget flotante / superposición en el lanzador de Android
  • Diferencia entre MotionEvent.getRawX y MotionEvent.getX
  • Prueba de un ViewPager y TabPageIndicator con Espresso
  • Icono flotante en otras aplicaciones
  • Barra de estado de superposición en android 4.2.2+
  • Posición del cursor de EditText
  • En Android, utilizando la misma barra de herramientas (elementos RelativeLayout) en varias vistas
  • Android - Botón con imagen giratoria / giratoria de "carga" cuando se pulsa
  • ¿Cómo puedo obtener botones de acción con diseños personalizados para que se llamen como botones de acción estándar en Android 3.0+
  • TransitionDrawable: invierte automáticamente la transición una vez que completa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.