@prokopov-vi

Как правильно изменить цвет компонента?

Столкнулся с неожиданной проблемой с отображением цветов!

Мне нужно в зависимости от некоторых факторов задавать цвета круглой кнопке. Изменяю ее цвет таким образом:

switch (i){
            case 0:{
                StateListDrawable stateListDrawable = (StateListDrawable) typeIndicator.getBackground();
                stateListDrawable.setColorFilter(context.getResources().getColor(R.color.type_task_indicator_first), PorterDuff.Mode.MULTIPLY);
                break;
            }
            case 1:{
                StateListDrawable stateListDrawable = (StateListDrawable) typeIndicator.getBackground();
                stateListDrawable.setColorFilter(context.getResources().getColor(R.color.type_task_indicator_second), PorterDuff.Mode.MULTIPLY);
                break;
            }
            case 2:{
                StateListDrawable stateListDrawable = (StateListDrawable) typeIndicator.getBackground();
                stateListDrawable.setColorFilter(context.getResources().getColor(R.color.type_task_indicator_three), PorterDuff.Mode.MULTIPLY);
                break;
            }
        }


Должны отображаться красный, желтый и зеленый в соответствии!!!

НО оно совсем не так выглядит:


4680aa9e3f174c84b0725f5f24179a45.jpgБрал эти цвета:

<color name="type_task_indicator_three">#4CAF50</color>
    <color name="type_task_indicator_second">#f1c40f</color>
    <color name="type_task_indicator_first">#e74c3c</color>


В чем может быть проблема ?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
1) Почему бы не сделать разные drawable для разных фонов?
2) По-моему, проблема в PorterDuff.Mode.MULTIPLY, и том, как он взаимодействует с настоящим цветом фона (кстати, какой цвет без фильтров?). Ну и я бы попробовал PorterDuff.Mode. DST_ATOP.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы