2016-07-18 14 views
7

मैं appcompat-v7 toolbar का उपयोग कर रहा हूं और आइकन के साथ कुछ मेनू जोड़ा गया है।टूलबार एक्शन बटन आइकन रंग

मेरे 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" /> 

माउस मूल रूप से काले हैं, लेकिन मैं इसे उपकरण पट्टी पर सफेद रंग के रूप प्रकट करने के लिए उम्मीद कर रहा था कि अगर मैं का उपयोग

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

इसके बजाय यह काला माउस को दर्शाता है। black icons

मेरे 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"/> 

मैं कैसे प्रतीक सफेद दिखाई देंगे?

संपादित करें:

प्रतीक उपकरण पट्टी पर दिखाया गया है केवल प्रतीक हैं मैं रंग बदलना चाहते हैं .. नहीं सभी चिह्न, सीमा से बाहर आइटम के आइकन सहित ... overflow items

+1

क्यों डाउनवोट? मैंने पोस्ट करने से पहले इस प्रश्न का उत्तर पाने के लिए सिर्फ 5 घंटे की खोज की .. –

+2

आप आइकन छवियों को सफेद क्यों नहीं बना सकते? यह बहुत आसान है। –

उत्तर

5

आप मैन्युअल रूप से सेट कर सकते हैं

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); 
: इस

@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; 
    } 
विशेष चिह्न के लिए

की तरह

यदि आपका अभिविन्यास रनटाइम बदल रहा है तो आप स्थिति का उपयोग करके अभिविन्यास की जांच कर सकते हैं और इस स्थिति में मेनू रंग सेट कर सकते हैं।

इस तरह:

@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();   
    } 
} 

या यदि आप न अपनी स्क्रीन बारी बारी से करना चाहते हैं, तो आप बस मैनिफ़ेस्ट फ़ाइल में इस तरह सेट कर सकते हैं:

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

या आप विशेष आइटम के लिए itemIconTint उपयोग कर सकते हैं:

<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

क्या यह ओवरफ़्लो आइकन भी बदल देगा? Coz मेरे पास ओवरफ़्लो मेनू पर आइकन हैं। –

+0

हाँ .. यह बदल जाएगा, बस इस कोड की प्रतिलिपि बनाएँ .. और आपको पता चलेगा। –

+0

मैंने अभी कोशिश की है और यह ओवरफ्लो आइकन भी बदलता है ..मैं केवल रंग बदलने के लिए दिखाए गए एक्शन बटन आइकन चाहता हूं लेकिन अतिप्रवाह मेनू आइकन नहीं। –

0

आपका मुख्य विषय

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

पॉपअप या भी मेनू आइटम विषय अगर आप चाहते हैं और अधिक पॉपअप, आकार की पृष्ठभूमि जैसे कुछ और PopupMenu आप अन्यथा चाहते हैं को दूर

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

रंग आप जोड़ सकते हैं

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

पॉपअपमेनू ठीक है .. टूलबार पर केवल आइकन जो मैं रंग सेट करना चाहता हूं ... –

संबंधित मुद्दे