2015-11-27 2 views
1

Как я могу изменить цвет значка меню на панели действий программным способом, не используя styles.xml?Android: Как изменить цвет значков меню

Я нашел очень простое решение, чтобы использовать метод setTint(), но это, похоже, применяется только для Lollipop и выше.

ответ

1

По телефону улучшатся позже. Это должно работать:

MenuItem menuItem = menu.findItem(R.id.your_menu_item); 
Drawable drawable = menuItem.getIcon(); 
if (drawable != null) { 
    // If we don't mutate the drawable, then all drawable's with this id will have a color 
    // filter applied to it. 
    drawable.mutate(); 
    drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); 
    drawable.setAlpha(alpha); 
} 
+0

В этом случае, какая величина должна иметь переменная 'alpha'? – MarshallLee

+0

@newbieprogrammer вы можете удалить эту строку, если вы не хотите изменять значение альфа. –

+0

Привет, спасибо! он, наконец, работает по назначению. Большое вам спасибо за подсказку :) – MarshallLee

0

Вы можете оттенять обратную совместимость, используя DrawableCompat в библиотеке поддержки. API требует немного шаблона обертки для работы.

MenuItem item = ... // The menu item you want to change color 
Drawable icon = item.getIcon(); 
int tintColor = ... // The color you want, expressed as a color value, not an int resource. 
Drawable tintWrapper = DrawableCompat.wrap(icon); 
DrawableCompat.setTint(tintWrapper, tintColor); 
item.setIcon(tintWrapper); 
+0

Спасибо за отзыв. Но я просто следовал этому пути, и он тоже не работал. – MarshallLee

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