2013-01-16 23 views
16

Ho usato "Android Action Bar Style Generator" per generare il mio tema Holo. Quindi ho aggiunto due icone alla barra delle azioni, una per un filtro di ricerca e una per un selettore di file, entrambe le icone sono bianche. L'icona di selezione file (a destra) sembra buona, ma in qualche modo l'icona di ricerca appare di colore grigio scuro. Quando si digita nella visualizzazione del testo di ricerca, anche il pulsante Chiudi appare grigio scuro.Come modificare l'icona predefinita SearchView?

Ho provato a cambiare il colore della barra delle azioni e anche dal searchview, senza successo. Perché la visualizzazione della ricerca mostra questo colore? Come posso cambiarlo?

ActionBar with two actions

La ringrazio molto.

UPDATE: Ho pensato che la mia app stava usando la mia icona, ma non lo fa, si utilizza la vista icona di ricerca di default, quindi la mia domanda è in realtà, come faccio a cambiare l'icona predefinita della vista di ricerca? Questa frase il file menu.xml non funziona:

android:icon="@drawable/selectable_header_search" 

risposta

17

Purtroppo, non v'è alcun modo semplice per cambiare l'icona SearchView ad un drawable personalizzato, in quanto l'attributo tema searchViewSearchIcon non è pubblico. Vedere la risposta this per i dettagli.

Tuttavia, penso che il tuo problema sia causato dall'eredità dal tema sbagliato. Utilizzare android:Theme.Holo.Light.DarkActionBar come base per il tema. Quindi le icone predefinite sulla barra delle azioni dovrebbero avere un colore chiaro.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    ... 
</style> 
-3

Per chi, come me, sperando di trovare un modo per cambiare veramente l'icona, è possibile utilizzare questo con ActionBar sherlock:

 // Getting the 'search_icon' 
     ImageView searchIcon = (ImageView)searchView.findViewById(R.id.abs__search_button); 
     // Setting background of 'search_plate' to earlier defined drawable. 
     searchIcon.setImageResource(R.drawable.search_button_selector); 

Non è possibile modificare il valore predefinito quello con il modo comune android:icon , perché il campo ad esso correlato era stato impostato su privato.

+1

Questo ovviamente funziona solo se si utilizza ActionBarSherlock –

6

tenta di impostare nel showAsAction questa opzione: * * MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW

Senza questa opzione la SearchView non prendere l'icona che si imposta per pulsante di azione.

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); 
+1

Questo risolto (icona personalizzata non funzionante) per me, Android 4.1 a 5.0. Equivalentemente nel menu XML: 'app: showAsAction =" always | collapseActionView "' – Jonik

0

Il modo più semplice che ho trovato per modificare l'icona predefinita SearchView nella barra delle operazioni è in tuo onPrepareOptionsMenu. Puoi vedere la mia risposta here a una domanda simile!

9

Poiché l'attributo searchViewSearchIcon non è pubblico, è possibile modificare l'icona utilizzando il seguente codice:

int searchIconId = searchView.getContext().getResources().getIdentifier("android:id/search_button",null, null); 
ImageView searchIcon = (ImageView) searchView.findViewById(searchIconId); 
searchIcon.setImageResource(R.drawable........); 
+3

questo genera una nullPointerException – desgraci

+0

questo non funziona su Android 4.3, 4.4 – SjoerdvGestel

+0

Super sta funzionando – Bahu

0

Nel tuo stile tema includono questo:

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

È ora possibile definire lo stile di SearchView con searchViewStyle e editTextColor imposteranno il colore del testo nella casella di ricerca. Impostando android:textColorHint, imposterai anche il colore del suggerimento, ad es. "Ricerca...".

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

Questo sarà lo stile la tua ricerca Mostra come ti piace, più o meno. Il campo searchIcon è l'icona nella barra delle azioni. Il campo searchHintIcon è l'icona piccola a sinistra del suggerimento nel campo di ricerca. Il campo closeIcon è l'icona di chiusura sul lato destro del campo di ricerca.

Check this out, per ulteriori impostazioni di stile:

$ANDROID_SDK/platforms/android-24/data/res/values/styles_holo.xml 
Problemi correlati