Я создаю календарное представление, и я хочу создать фон для LineairLayout, который является clickabe.Ninepatch Drawable with ColorFilter
Поэтому я создаю StateListDrawable с двумя изображениями:
- Изображение для фона
- Изображение когда деталь была нажата
Пока что работает с этим куском кода :
NinePatchDrawable background = (NinePatchDrawable) context.getResources().getDrawable(R.drawable.calendar_item);
Drawable backgroundFocus = context.getResources().getDrawable(R.drawable.calendar_focus);
int stateFocused = android.R.attr.state_focused;
int statePressed = android.R.attr.state_pressed;
StateListDrawable sld = new StateListDrawable();
sld.addState(new int[]{ stateFocused, statePressed}, backgroundFocus);
sld.addState(new int[]{-stateFocused, statePressed}, backgroundFocus);
sld.addState(new int[]{-stateFocused}, background);
return sld;
Но я хотел бы сделать что-то дополнительное. Я хотел бы, чтобы пользователь мог передать цвет, который он хочет использовать для отображения фона. Таким образом, фон var должен быть переменным, но он должен быть основан на использовании девяти патчей.
Так я думал, что я мог бы просто сделать что-то вроде этого:
background.setColorFilter(Color.RED, PorterDuff.Mode.DST_IN);
Где Color.RED должны быть заменены цветом выбора пользователя.
Но это, похоже, не работает. Девять патчей создаются отлично, но без примененного цветного флиптера.
Я также попробовал другие PoterDuff.Mode «s:
- SRC
- SRC_ATOP
- DST_IN
- ...
Если у вас есть какие-либо понятия, что я делая что-то неправильно или что я мог бы сделать еще, чтобы решить мою проблему, пожалуйста, дайте мне знать! :-)
Kr,
Dirk
Статуэтки AFAIK удаляют все цветные фильтры, прикрепленные к чертежам. Таким образом, проблема, возможно, не в части 9patch, возможно, это сборщик статей. Не могли бы вы протестировать, чтобы удалить стат-лист, применить цветной фильтр к выноски и дать обратную связь? – chuck258