Как изменить цвет иконок в toolbar?

273
17 декабря 2017, 10:04

У меня есть тулбар к которому я добавил список с меню.

<?xml version="1.0" encoding="utf-8"?>

<!--Action buttons -->
<item
    android:id="@+id/toolbar_attach"
    android:icon="@drawable/ic_action_attachment_2"
    android:orderInCategory="0"
    android:title="@string/attach"
    app:showAsAction="always"
    />
<item
    android:id="@+id/toolbar_record"
    android:icon="@drawable/ic_action_mic"
    android:orderInCategory="1"
    android:title="@string/record"
    app:showAsAction="always" />
<!--Popup menu-->
<item
    android:id="@+id/toolbar_save"
    android:orderInCategory="0"
    android:title="@string/save"
    app:showAsAction="never" />
<item
    android:id="@+id/toolbar_cancel"
    android:orderInCategory="1"
    android:title="@string/cancel"
    app:showAsAction="never" />
<item
    android:id="@+id/toolbar_delete"
    android:orderInCategory="2"
    android:title="@string/delete"
    app:showAsAction="never" />

Проблема в том, что цвет тулбара темный и иконки на нём теряются (помечены showAsAction). Поэтому хочу поменять их цвет, например на белый.

Искал варианты, попробовал android:iconTint="желаемый_цвет", но данное решение подходит для api 26+. Подскажите решение.

Answer 1

Вы можете сделать это программно так:

@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.textColorPrimary), PorterDuff.Mode.SRC_ATOP);
        }
    }
    return true;
}
Answer 2

Для более ранних версий API, вы можете изменить цвет самих иконок. В папке drawable, находите нужную иконку, открываете и вместо черного (по умолчанию) указываете нужный цвет.

<path
    android:fillColor="@color/blue"
    android:pathData="..."/>

Так же стоит заметить, что изменить цвет можно только для векторных иконок. Если вы по каким то причинам используете растр, то цвет таких иконок можно изменить только в графическом редакторе.

READ ALSO
Как сделать URL ссылки не нажимаемыми?

Как сделать URL ссылки не нажимаемыми?

Есть TextView в котором имеются несколько ссылокПри нажатии на TextView появляется PopupMenu

240
Создание многофункциональной и правильной навигации в приложении

Создание многофункциональной и правильной навигации в приложении

Я создал в приложении простой Navigation Drawer со всеми фрагментами(шторка слева) и Bottom Navigation View, в который помещаются пять наиболее используемых...

243
Как открыть второе окно в Javafx

Как открыть второе окно в Javafx

Программа состоит из нескольких окно в которых таблицыПри нажатии на MenuItem должна открываться новая таблица (окно) и закрываться старое

387
Как прокрутить к изображению у которого есть класс

Как прокрутить к изображению у которого есть класс

При клике на изображение к его ссылке добавляется класс class="active" как на JQuery прокрутить картинки в блоке id="bx-pager" к ссылке с классом active

267