2015-12-30 34 views
10

Ho una semplice domanda.Cambia colore/stile barra degli strumenti su SearchView click

Come posso cambiare il colore/il tema di Toolbar in bianco quando si fa clic sull'icona Cerca?

Desidero che la barra degli strumenti sia bianca (con freccia indietro colorata in nero/grigio) ogni volta che si fa clic sull'icona di ricerca. Ho aggiunto SearcView (android.support.v7.widget.SearchView) in MenuItem

Questo quando il pulsante enter image description here

Per

enter image description here

E poi di nuovo al colore originale Toolbar Indietro è cliccato.

+0

Forse si può aggiungere un ascoltatore a 'SearchView', quando si espanse, cambiare il colore del' Toolbar'. – RockerFlower

+1

usa searchview sul click dell'icona di ricerca apri attività ricercabile con bianco edittext spero tu abbia letto questo http://developer.android.com/guide/topics/search/search-dialog.html –

+0

Ho visto quel link ma non è collegato a quello che ho chiesto. –

risposta

12

enter image description here

In Activity/Fragment Codice:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.activity_menu, menu); 

    MenuItem searchMenuItem = menu.findItem(R.id.search); 
    if (searchMenuItem == null) { 
     return true; 
    } 

    searchView = (SearchView) searchMenuItem.getActionView(); 
    MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() { 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      // Set styles for expanded state here 
      if (getSupportActionBar() != null) { 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.RED)); 
      } 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      // Set styles for collapsed state here 
      if (getSupportActionBar() != null) { 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.BLUE)); 
      } 
      return true; 
     } 
    }); 

    return true; 
} 

E menu effettivi d' XML è:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/search" 
     android:title="@string/search_title" 
     android:icon="@drawable/ic_menu_search" 
     app:showAsAction="always|collapseActionView" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

Per modificare il colore dei tasti X-back/per la vista espansa aggiungi questo nei tuoi stili:

<item name="colorControlNormal">@color/my_great_color</item> 

di fare il cambiamento del colore più liscia - si può animarlo: Animate change of view background color on Android

Spero, aiuta

+0

Grazie! Quello che hai menzionato funziona parzialmente. La freccia indietro diventa invisibile anche se è presente ma il colore della freccia indietro e dello sfondo è lo stesso –

+0

@FaizanMubasher Aggiunto screenshot - la freccia indietro rimane la stessa, è assolutamente visibile. Tuttavia, puoi sempre cambiare il colore seguendo questo suggerimento: http://stackoverflow.com/questions/26788464/how-to-change-of-the-back-arrow-in-the-new-material-theme (anche in onMenuItemActionExpand e onMenuItemActionCollapse) –

+0

Hai ragione! In realtà sto cambiando colore da ** Blu ** a ** Bianco **, ecco perché la freccia indietro sembra essere invisibile. Inoltre, il colore del testo in SearchView è anch'esso bianco. Comunque, grazie. –

Problemi correlati