2016-12-14 9 views
2

Ich habe eine popup menu erstellt und in der popup.xml habe ich zwei Symbole. Ich versuche, die Farbe des Icons in der popup.xml zu ändern, aber die Farbe bleibt immer weiß (Originalfarbe).Ändern Sie die Farbe im Menü

Gibt es eine Möglichkeit, die Farbe im Menü zu ändern?

popup.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/opt1" 
     android:icon="@drawable/change_pic" 
     android:color="@color/green" 
     android:title="Change Picture" /> 
    <item 
     android:id="@+id/opt2" 
     android:icon="@drawable/change_pin" 
     android:title="Change Password" /> 
</menu> 

ScreenShot

enter image description here

-Code

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.add_task, menu); // for the two icons in action bar 
     return true; 
    } 

    @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 

       case R.id.menu: 
        View menuItemView = findViewById(R.id.menu); 
        MenuBuilder menuBuilder =new MenuBuilder(this); 
        MenuInflater inflater = new MenuInflater(this); 
        inflater.inflate(R.menu.popup, menuBuilder); 
        MenuPopupHelper optionsMenu = new MenuPopupHelper(this, menuBuilder, menuItemView); 
        optionsMenu.setForceShowIcon(true); 
        optionsMenu.show(); 

       default: 
        return super.onOptionsItemSelected(item); 
      } 
     } 

Wie Sie sehen können, ist das Bild tatsächlich weiße Farbe.

+0

Holen Sie sich die Zeichen aus dem Icon-Menü und wenden Sie Farbfilter in diesem –

+0

Sie versuchen, die Farbe Ihres Symbols zu ändern - "change_pic", die im Zeichnungsordner vorhanden ist? –

+0

Can u einen Screenshot zeigen, wie ur immer nw – Athul

Antwort

2

diese Bitte versuchen

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

      case R.id.menu: 
       View menuItemView = findViewById(R.id.menu); 
       MenuBuilder menuBuilder =new MenuBuilder(this); 
       MenuInflater inflater = new MenuInflater(this); 
       inflater.inflate(R.menu.popup, menuBuilder); 
Drawable yourdrawable1 = menuBuilder.getItem(0).getIcon(); // change 0 with 1,2 ... 
      Drawable yourdrawable2 = menuBuilder.getItem(1).getIcon(); 
      yourdrawable1.mutate(); 
      yourdrawable2.mutate(); 
      yourdrawable1.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_IN); 
yourdrawable2.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_IN); 
       MenuPopupHelper optionsMenu = new MenuPopupHelper(this, menuBuilder, menuItemView); 
       optionsMenu.setForceShowIcon(true); 
       optionsMenu.show(); 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
+0

Dies wird die Farbe ändern Bild ändern – Athul

+0

Bitte versuchen Sie und lassen Sie mich know – Athul

+0

Wenn ich Ihren Code verwenden, ist meine Aktion Leiste Symbol gegangen, weil ich sie in 'getMenuInFlater(). Inflate (R hinzufügen .menu.add_task, menu); ' –

0

change_pic Bilddatei oder Vektor-Asset-Datei ist ??? Wenn es Vektor-Asset ist, dann können Sie die Farbe aus XML-Datei ändern und wenn Sie Bilddatei verwenden, dann empfehle ich Ihnen, Vektor-Asset-Datei zu verwenden.

+0

Ich Download von https://material.io/icons/#ic_power_settings_new. Ist es eine Vektor-Asset-Datei? –

+0

In welchem ​​Format hatten Sie es heruntergeladen? – appy

+0

.svg oder .png Format? – appy

Verwandte Themen