it-swarm.com.de

Wie ändere ich das SearchView-Standardsymbol?

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?

ActionBar with two actions

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"
16
jmhostalet

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

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........);
10
mspapant

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);
6
timudgin

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!

0
just_user

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
0
Per Löwgren