Динамическое изменение цвета значка гамбургера/стрелки Android

Я хочу изменить цвет значка гамбургера/стрелки в навигационном ящике. Я знаю, что могу изменить его в стилях, но я хочу динамически изменить его в java. Кто-нибудь знал, как это сделать?


person Rafal Ulko    schedule 26.08.2015    source источник
comment
Какой код не работает?   -  person moffeltje    schedule 26.08.2015
comment
здесь такая же проблема. и @moffeltje думаю, что Рафалу не повезло найти код для него (то же самое здесь) .. его искали 3 часа.   -  person MiguelHincapieC    schedule 11.09.2015
comment
Рафаль, если вы нашли ответ, можете ли вы опубликовать его или обойти его?   -  person MiguelHincapieC    schedule 11.09.2015
comment
Нет, я не нашел, как это сделать, единственный способ раскрасить этот значок - изменить тему в ресурсе:/   -  person Rafal Ulko    schedule 14.09.2015
comment
Я понял, я пытаюсь динамически изменить все элементы панели инструментов. Сейчас мне не хватает ActionMenuViews посмотрите на мой вопрос.   -  person MiguelHincapieC    schedule 16.09.2015


Ответы (2)


Используя appcompat-v7:23.0.1, у меня сработал следующий код:

int color = Color.parseColor("#FFEEEE00");
final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP);

for (int i = 0; i < toolbar.getChildCount(); i++) {
    final View v = toolbar.getChildAt(i);

    if (v instanceof ImageButton) {       
        ((ImageButton) v).setColorFilter(colorFilter);
    }
}

Используйте его в public boolean onCreateOptionsMenu(Menu menu)

person MiguelHincapieC    schedule 16.09.2015
comment
Нашел ли это полезным для вас?, вам нужно что-то еще или это нормально. Не забудьте принять правильный ответ - person MiguelHincapieC; 17.09.2015
comment
Это работает, спасибо. И его нужно установить в onCreateOptionsMenu, иначе он не работает. По крайней мере для меня. - person Zokran; 11.01.2016

Вы можете использовать setTint нового класса DrawableCompat (из библиотеки поддержки v4)

// Get the icon you want as a drawable
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_menu, null);
// "Enable" tinting process
drawable = DrawableCompat.wrap(drawable);
// Tint it
DrawableCompat.setTint(drawable, Color.BLACK);
// Set it as action bar icon
actionBar.setHomeAsUpIndicator(drawable);

Дополнительные сведения о окрашивании с возможностью рисования см. в сообщении Криса Бэйна о поддержке библиотека версии 22.1

person Gaëtan Maisse    schedule 26.08.2015
comment
Да, я пробую это, но теперь нет анимации - person Rafal Ulko; 26.08.2015