2014-12-02 15 views
7

Ich habe eine Suchansicht mit einem Content-Provider für benutzerdefinierte Vorschläge, die in einem Dropdown angezeigt werden. Der Dropdown-Hintergrund ist jedoch dunkel, während der Text schwarz ist, so dass er nicht gut sichtbar ist. Mein App-Thema erbt von Theme.AppCompat.Light, also ist alles andere in meiner App schwarzer Text auf hellem Hintergrund.Ändern der Hintergrundfarbe von Searchview Autocomplete Dropdown

enter image description here

Ich mag den Hintergrund des Drop-Down ändern, damit der Text lesbar ist, aber ich habe keine Möglichkeit, dies zu tun gefunden. Das nächste, was ich bekam, war die folgende Lösung: Style Android SearchView Drop down popup Aber wenn das Dropdown erscheint, sieht alles durcheinander.

enter image description here

Gibt es eine funktionierende Lösung für dieses?

+0

Haben Sie Chris Banes' Vorschlag versuchen? http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html. Suchen Sie nach dem Abschnitt Titel SearchView Widget. –

Antwort

9

Hier ist eine Möglichkeit.

Definieren Sie ein Zeilenschema für Abfragevorschläge, z. R.layout.li_query_suggestion, das sieht wie folgt aus:

<?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"/> 

Beachten Sie, dass die Hintergrundfarbe ist weiß und die Textfarbe ist schwarz. Sie können diese Werte natürlich ändern.

Geben Sie dann in Ihrem Cursor-Adapter das Layout an, das Sie als Zeilenlayout erstellt haben. ZB:

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

Dies gibt Ihnen etwas, das wie folgt aussieht: enter image description here

Gerade FYI wie dieses, mein aktuelles Thema sieht :

<!-- 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

i Sie

denken verwenden sollten
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)); 
} 

Dies kann die SearchAutoComplete Dropdown-Backgroun festlegen d

14

Anwenden von Stilen auf Licht, das Sie auf die Dropdown-Hintergrundfarbe ändern und die Elemente Textfarbe und -größe

<!-- 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> 
Verwandte Themen