У меня есть собственное изображение, которое должно иметь возможность устанавливать цвет значка программно или из макетов. Это работает.Пользовательский ImageView с colorFilter хранит один и тот же фильтр, если тот же drawable используется снова
Скажем, я использую белый значок на черном фоне.
Затем, если один и тот же значок можно вырезать в другом месте приложения и инвертировать цвета, черный значок на белом фоне. Тогда только значки, которые использовались до того, как они останутся в исходном цвете. И я не могу изменить его ни с макета, ни с программным обеспечением. Такая же активность, но разные фрагменты.
Это класс.
public class IconView extends ImageView {
public IconView(Context context) {
this(context, null);
}
public IconView(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.iconViewStyle);
}
public IconView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.IconView, defStyle, 0);
int color = attributes.getColor(R.styleable.IconView_icon_color, Color.WHITE);
ColorFilter cf = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN);
if (getDrawable() != null) getDrawable().setColorFilter(cf);
attributes.recycle();
}
public void setIconColor(int color) {
getDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
}
я делаю что-то неправильно, или может андроид повторного использования какого-то образом, что вводимый коэффициент, когда они нарисованы они остаются, что путь (кажется странным)!
У меня тоже такое поведение, хотя я использую то же самое, что и в MenuItem и ImageView, я думаю, что это связано с кешем Android – HendraWD
Точно! Проверьте принятый ответ на помощь! –
Проблема заключается в том, что я использую MenuItem, а на MenuItem у нас нет .setColorFilter(), вместо этого мы используем MenuItem.getIcon(). SetColorFilter() – HendraWD