2015-01-31 24 views
5

Ich möchte es in schwarz sein. Ich habe versucht, die textPrimaryColor zu ändern, aber das Eingabefeld für die Suche war ebenfalls betroffen, und das möchte ich nicht.So ändern Sie die Suchvorschläge Text Farbe

Screenshot

Hier ist meine Stile für die Aktionsleiste.

<style name="MyActionBar" parent="Theme.AppCompat.Light"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorPrimaryInverse">@android:color/white</item> 
    <item name="android:textColorHint">@android:color/white</item> 
    <item name="android:actionMenuTextColor">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
</style> 

Antwort

4

hatte ich das gleiche Problem und die Lösung hier gefunden: https://code.google.com/p/android/issues/detail?id=5237#c8

EDIT:

Versuchen Sie, den Stil für den vorgeschlagenen Text außer Kraft zu setzen.

In Ihrem „MyActionBar“ Stil hinzufügen die folgenden Artikel:

<item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewLight</item> 

und der Stil AutoCompleteTextViewLight schaffen, die die Farbe fixieren:

<style name="AutoCompleteTextViewLight" parent="@android:style/Widget.AutoCompleteTextView"> 
    <item name="android:textColor">@android:color/primary_text_light</item> 
</style> 
+0

Während dieser Link, um die Frage beantworten kann, ist es besser, die wesentliche Teile der Antwort sind hier und geben Sie den Link Referenz. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. –

+0

Sie sind völlig in Ordnung @ TomBrunberg. Ich bearbeitete die Antwort und fügte die Details hinzu – ljmelgui

+0

Hallo, ich versuche den gleichen Code, aber der Text immer noch weiß, haben Sie einen Vorschlag für dieses Problem? im voraus. – James

0

stand ich dieses Problem vor und erstellt um ein Werk für es.

/** 
* @param viewGroup 
*   View to search for child views inside 
* @param _class 
*   child view class inside the View 
* @return child view of corresponding View class 
*/ 
public static <V extends View> Collection<V> findChildrenByClass(ViewGroup viewGroup, Class<V> _class) { 

    return gatherChildrenByClass(viewGroup, _class, new ArrayList<V>()); 
} 

/** 
* @param viewGroup 
*   View to search for child views inside 
* @param _class 
*   child view class inside the View 
* @param childrenFound 
*   child view if found 
* @return child view of corresponding View class 
*/ 
@SuppressWarnings("unchecked") 
private static <V extends View> Collection<V> gatherChildrenByClass(ViewGroup viewGroup, Class<V> _class, Collection<V> childrenFound) { 

    for (int i = 0; i < viewGroup.getChildCount(); i++) 
    { 
     final View child = viewGroup.getChildAt(i); 
     if (_class.isAssignableFrom(child.getClass())) { 
      childrenFound.add((V)child); // unchecked on this line 
     } 
     if (child instanceof ViewGroup) { 
      gatherChildrenByClass((ViewGroup) child, _class, childrenFound); 
     } 
    } 

    return childrenFound; 
} 

Hier sind zwei Methoden, die alle untergeordneten Blick auf die SearchView finden, zur Zeit gibt es drei Kinder für SearchView:

  • TextView, die in der Dropdown-Vorschlagsliste zu sehen ist
  • AutoCompleteTextView welches Sie innerhalb des SearchView
  • ImageView eintippen, das das nahe Bild rechts vonist 0

Jetzt können wir die TextView finden und ändern Sie dann ihre Farbe. Tun Sie dies in Ihrem Activity oder Fragment:

// Setting up the TextView of searchView suggestions drop down list 
for (TextView textView : findChildrenByClass(mSearchView, TextView.class)) { 
    textView.setHint("Type a word"); 
    textView.setTextColor(Color.rgb(255, 255, 255)); 
    textView.setHintTextColor(Color.argb(128, 255, 255, 255)); 
} 

Alles fertig :)

Verwandte Themen