#java #android #android_imageview
Я хочу сделать фильтр на чёрно-белое изображение, это мне нужно для разных тем в приложении. Как я понимаю для этого надо использовать ImageView header = (ImageView) findViewById(R.id.drawer_header); header.setColorFilter(R.color.my_color); Я создал отдельный проект для тестирования и вот что получилось: Но если я нажимаю на любую кнопку, кроме "убрать фильтр" (он ставит цвет android.R.color.transparent), получается вот такая фигня: Почему он делает всё фиолетовым? По логике всё должно работать. Приведу код применения цвета полностью: ... // Покрасить в красный public void setRedColor(View v) { ImageView header = (ImageView) findViewById(R.id.header); header.setColorFilter(R.color.red); } // Покрасить в синий public void setBlueColor(View v) { ImageView header = (ImageView) findViewById(R.id.header); header.setColorFilter(R.color.blue); } // Покрасить в зелёный public void setGreenColor(View v) { ImageView header = (ImageView) findViewById(R.id.header); header.setColorFilter(R.color.green); } // Убрать краску public void setNullColor(View v) { ImageView header = (ImageView) findViewById(R.id.header); header.setColorFilter(android.R.color.transparent); } Разметка:
Ответы
Ответ 1
Поменяйте каждый setColorFilter на setColorFilter(this.getResources().getColor(R.color. ... )) но getColor() не рекомендован после API 23, но можно воспользоваться v4 support либо другим getColor() для API>=23Ответ 2
Разобрался с проблемой, надо было сделать так: header.setColorFilter(this.getResources().getColor(R.color.red), PorterDuff.Mode.ADD);
Комментариев нет:
Отправить комментарий