2014-12-02 12 views
7

Ho una vista di ricerca con un fornitore di contenuti per i suggerimenti personalizzati, che sono visualizzati in un menu a discesa. Tuttavia, lo sfondo a discesa è scuro mentre il testo è nero, quindi non è molto visibile. Il tema dell'app è ereditato da Theme.AppCompat.Light, quindi tutto il resto della mia app è testo nero su sfondo chiaro.Cambiare il colore di sfondo del menu a tendina del completamento automatico searchview

enter image description here

voglio cambiare lo sfondo della discesa in modo che il testo sia leggibile ma non ho trovato alcun modo di farlo. Il più vicino che ho trovato è stato seguire la soluzione qui: Style Android SearchView Drop down popup Ma quando appare il menu a discesa, la roba sembra incasinata.

enter image description here

Esiste una soluzione di lavoro per questo?

+0

Hai provato il suggerimento di Chris Banes'? http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html. Cerca i titoli della sezione SearchView Widget. –

risposta

9

Ecco una possibilità.

Definire un layout di riga di suggerimento di query, ad es. R.layout.li_query_suggestion, che assomiglia a questo:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    android:id="@android:id/text1" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/white" 
    android:gravity="center_vertical" 
    android:minHeight="56dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:textColor="@android:color/black" 
    tools:text="Blah blah blah"/> 

Si noti che il colore di sfondo è bianco e il colore del testo è nero. Ovviamente puoi cambiare questi valori.

Quindi, nell'adattatore del cursore, specificare il layout creato come layout di riga. Ad esempio:

CursorAdapter suggestionAdapter = new SimpleCursorAdapter(
    getActivity(), 
    R.layout.li_query_suggestion, 
    null, 
    new String[]{"name"}, 
    new int[]{android.R.id.text1}, 
    0); 

Questo vi darà qualcosa che assomiglia a quanto segue: enter image description here

Proprio A proposito, il mio tema attuale assomiglia a questo:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="colorPrimary">@color/light_blue_500</item> 
    <item name="colorPrimaryDark">@color/light_blue_700</item> 
    <item name="colorAccent">@color/pink_a200</item> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="searchViewStyle">@style/CustomSearchView</item> 
</style> 
6

penso che si dovrebbe usare

SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text); 
if (autoCompleteTextView != null) { 
    autoCompleteTextView.setDropDownBackgroundDrawable(getResources().getDrawable(R.drawable.abc_popup_background_mtrl_mult)); 
} 

questo può impostare il menu a discesa SearchAutoComplete d alla luce

14

stili Applicazione è possibile modificare il colore di sfondo a discesa e il colore elementi di testo e la dimensione

<!-- ToolBar --> 
<style name="ToolBarStyle" parent="Theme.AppCompat"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
    <item name="actionMenuTextColor">@android:color/white</item> 
    <item name="android:dropDownItemStyle">@style/myDropDownItemStyle</item> 
    <item name="android:dropDownListViewStyle">@style/myDropDownListViewStyle</item> 
</style> 


<style name="myDropDownItemStyle" parent="Widget.AppCompat.DropDownItem.Spinner"> 
    <item name="android:textColor">@color/secondary_text_default_material_light</item> 
    <item name="android:textSize">14dp</item> 
</style> 

<style name="myDropDownListViewStyle" parent="Widget.AppCompat.ListView.DropDown"> 
    <item name="android:background">#FFF</item> 
</style> 
Problemi correlati