Ich habe " Android Action Bar Style Generator " verwendet, um mein eigenes Holo-Theme zu generieren. Dann habe ich der Aktionsleiste zwei Symbole hinzugefügt, eines für einen Suchfilter und eines für eine Dateiauswahl, beide Symbole sind weiß . Das Dateiauswahlsymbol (rechts) sieht gut aus, aber irgendwie sieht das Suchsymbol dunkelgrau aus. Wenn Sie in die Suchtextansicht tippen, wird die Schaltfläche zum Schließen ebenfalls dunkelgrau angezeigt.
Ich habe versucht, die Farbe der Aktionsleiste und auch in der Suchansicht zu ändern, ohne Erfolg. Warum zeigt die Suchansicht diese Farbe? Wie kann ich das ändern?
Vielen Dank.
UPDATE: Ich dachte, dass meine App mein Symbol verwendet, aber nicht, es verwendet das Standardsymbol für die Suchansicht. Meine Frage ist also, wie ich das Standardsymbol für die Suchansicht ändere ? Dieser Satz in der Datei menu.xml funktioniert nicht:
Android:icon="@drawable/selectable_header_search"
Leider gibt es keine einfache Möglichkeit, das Symbol SearchView
in ein benutzerdefiniertes Zeichenelement zu ändern, da das Motivattribut searchViewSearchIcon
nicht öffentlich ist. Siehe diese Antwort für Details.
Ich denke jedoch, dass Ihr Problem durch das Erben vom falschen Thema verursacht wird. Bitte verwenden Sie Android:Theme.Holo.Light.DarkActionBar
als Basis für Ihr Design. Dann sollten die Standardsymbole in der Aktionsleiste eine helle Farbe haben.
<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
...
</style>
Da das searchViewSearchIcon-Attribut nicht öffentlich ist, können Sie das Symbol mit folgendem Code ändern:
int searchIconId = searchView.getContext().getResources().getIdentifier("Android:id/search_button",null, null);
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId);
searchIcon.setImageResource(R.drawable........);
Versuchen Sie, die Option showAsAction diese Option einzurichten: * MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW *
Ohne diese Option übernimmt das SearchView-Symbol nicht das Symbol, das Sie für die Aktionsschaltfläche eingerichtet haben.
menu.add("Search")
.setIcon(
getResources().getDrawable(
R.drawable.selectable_header_search))
.setActionView(searchView)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
Der einfachste Weg, das Standard-Suchansichtssymbol in der Aktionsleiste zu ändern, ist das onPrepareOptionsMenu. Sie können meine Antwort hier auf eine ähnliche Frage sehen!
Fügen Sie in Ihrem Designstil Folgendes hinzu:
<style name="YourTheme.Toolbar">
<item name="searchViewStyle">@style/YourActionBarSearch</item>
<item name="editTextColor">@color/your_ab_text_color</item>
<item name="Android:textColorHint">@color/your_ab_hint_color</item>
</style>
Sie können jetzt den Stil der SearchView mit searchViewStyle
definieren, und editTextColor
legt die Farbe des Textes im Suchfeld fest. Durch die Einstellung von Android:textColorHint
legen Sie auch die Farbe des Hinweises fest, z. "Suche...".
<style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView">
<item name="searchIcon">@drawable/ic_ab_search</item>
<item name="queryBackground">@null</item>
<item name="submitBackground">@null</item>
<item name="searchHintIcon">@drawable/ic_ab_small_search</item>
<item name="defaultQueryHint">@string/toolbar_search_hint</item>
<item name="closeIcon">@drawable/ic_ab_small_search_close</item>
</style>
Dadurch wird Ihre Suchansicht mehr oder weniger beliebig gestaltet. Das Feld searchIcon
ist das Symbol in der Aktionsleiste. Das Feld searchHintIcon
ist das kleine Symbol links vom Hinweis im Suchfeld. Das Feld closeIcon
ist das schließende Symbol auf der rechten Seite des Suchfelds.
Überprüfen Sie dies, um weitere Stileinstellungen zu erhalten:
$Android_SDK/platforms/Android-24/data/res/values/styles_holo.xml