2016-12-14 8 views
2

Я создал popup menu и внутри popup.xml, у меня есть две иконки. Я пытаюсь изменить цвет значка внутри popup.xml, но цвет всегда остается белым (исходный цвет).Изменить цвет в меню

Есть ли способ изменить выпадающий цвет в меню?

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

Код

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

Как вы можете видеть, изображение на самом деле белого цвета.

+0

Получить выделение из меню значков и применить цветной фильтр в этом –

+0

Вы пытаетесь изменить цвет своего значка - «change_pic», который присутствует в папке с возможностью перемещения? –

+0

Может у показать скриншот, как ур получать – Athul

ответ

2

Пожалуйста, попробуйте это

@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

Это изменяет цвет картинки pic image – Athul

+0

Попробуйте и дайте мне знать – Athul

+0

Если я использую ваш код, значок моей панели действий исчезнет, ​​потому что я добавляю их в 'getMenuInflater(). Inflate (R .menu.add_task, menu); ' –

0

change_pic является файл изображения или файл активов вектор ??? Если это векторный ресурс, вы можете изменить цвет из .xml-файла, и если вы используете файл изображения, я предлагаю вам использовать векторный файл ресурсов.

+0

Я загружаю с https://material.io/icons/#ic_power_settings_new. Рассматривается ли файл векторного актива? –

+0

В каком формате вы его загрузили? – appy

+0

.svg или .png формат? – appy

Смежные вопросы