2016-07-18 125 views
7

Sto usando il appcompat-v7 toolbar e ho aggiunto alcuni menu con icone.Barra degli strumenti Pulsante azione Colore icona

miei menu_items.xml

<item 
    android:id="@+id/quit" 
    android:title="Quit" 
    android:icon="@drawable/ic_power" 
    android:orderInCategory="700" 
    app:showAsAction="never"/> 
<item 
    android:id="@+id/app_settings" 
    android:orderInCategory="600" 
    android:icon="@drawable/ic_cog" 
    app:showAsAction="never" 
    android:title="Settings"/> 
<item 
    android:id="@+id/help" 
    android:orderInCategory="500" 
    android:title="Help" 
    android:icon="@drawable/ic_help" 
    app:showAsAction="always" /> 
<item 
    android:id="@+id/logout" 
    android:orderInCategory="400" 
    android:title="Logout" 
    android:icon="@drawable/ic_logout" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/tip" 
    android:orderInCategory="300" 
    android:title="Give Tip" 
    android:icon="@drawable/ic_coffee" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/withdraw" 
    android:orderInCategory="200" 
    android:title="Withdraw" 
    android:icon="@drawable/ic_bank" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/deposit" 
    android:orderInCategory="100" 
    android:title="Deposit" 
    android:icon="@drawable/ic_cash_multiple" 
    app:showAsAction="ifRoom" /> 

Le icone sono originariamente nero, ma mi aspettavo che appaia come bianco nella barra degli strumenti se uso il

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 

invece mostra icone nere. black icons

mio toolbar.xml

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:background="?attr/colorPrimary"/> 

Come posso fare le icone appaiono bianco?

Modifica:

Le icone mostrate nella barra degli strumenti sono le uniche icone voglio cambiare il colore .. Non tutte le icone, tra cui l'icona dell'elemento overflow ... overflow items

+1

Perché downvote? Ho cercato per 5 ore solo per trovare risposta a questa domanda prima di postare qui .. –

+2

Perché non riesci a rendere bianche le icone? È molto più semplice. –

risposta

5

è possibile impostare manualmente Ti piace questa

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 

     for(int i = 0; i < menu.size(); i++){ 
      Drawable drawable = menu.getItem(i).getIcon(); 
      if(drawable != null) { 
       drawable.mutate(); 
       drawable.setColorFilter(getResources().getColor(R.color.whiteColor), PorterDuff.Mode.SRC_ATOP); 
      } 
     } 

     return true; 
    } 

per particolari icona:

MenuItem favoriteItem = menu.findItem(R.id.action_favorite); 
Drawable newIcon = (Drawable)favoriteItem.getIcon(); 
newIcon.mutate().setColorFilter(Color.argb(255, 200, 200, 200), PorterDuff.Mode.SRC_IN); 
favoriteItem.setIcon(newIcon); 

se l'orientamento cambia tempo di esecuzione, è possibile controllare l'orientamento utilizzando le condizioni e impostare il colore del menu in questa condizione.

come questo:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 

     // here you can set menu item color if it landScape 

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();   
    } 
} 

o se non volete per ruotare lo schermo, si può semplicemente impostare nel file manifesto come questo:

<activity android:name=".activities.MainActivity" 
      android:screenOrientation="portrait"> 

oppure è possibile utilizzare itemIconTint per gli elementi particolari:

<item 
    android:id="@+id/quit" 
    android:title="Quit" 
    android:icon="@drawable/ic_power" 
    android:orderInCategory="700" 
    **app:itemIconTint="@color/black"** 
    app:showAsAction="never"/> 
<item 
    android:id="@+id/app_settings" 
    android:orderInCategory="600" 
    android:icon="@drawable/ic_cog" 
    app:showAsAction="never" 
    **app:itemIconTint="@color/black"** 
    android:title="Settings"/> 
+0

Cambierà anche le icone di overflow? Coz Ho icone sul menu di overflow. –

+0

si .. cambierà, basta copiare questo codice .. e lo saprai. –

+0

Ho appena provato e cambia anche le icone di overflow ..Voglio solo le icone del pulsante di azione mostrate per cambiare il colore, ma non le icone del menu overflown. –

0

Il tema principale

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 

    <item name="android:popupMenuStyle">@style/PopupMenu</item> 
    </style> 

PopUp o voce di menu a tema anche se volete un po 'più come sfondo di pop-up, dimensioni e PopupMenu è possibile aggiungere se si desidera altrimenti rimuovere

<style name="PopupMenu" parent="android:Theme.Holo.Light"> 
    <item name="android:popupBackground">@android:color/white</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textSize">9sp</item> 


    <item name="textAppearanceLargePopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large</item> 
    <item name="textAppearanceSmallPopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small</item> 
    </style> 

colori

<color name="white">#ffffffff</color> 
+0

Il menu popup è ok .. Solo le icone sulla barra degli strumenti che voglio impostare il colore ... –