У меня возникли проблемы с новым AppCompat 23.3.x и чертежами. Прежде всего, я должен был вернуться назад и удалить:Как оттолкнуть кнопку с помощью appcompat 23.3.0?
vectorDrawables.useSupportLibrary = true
Поскольку AppCompat вернулась, что так теперь, мое приложение снова генерировать PNG. Хорошо, однако, я тонировал кнопку (drawableTop) таким образом, что полностью перестала работать (для устройств, предшествующих M).
Вот метод, который я использовал:
private void toggleState(boolean checked) {
Drawable[] drawables = getCompoundDrawables();
Drawable wrapDrawable = DrawableCompat.wrap(drawables[1]);
if (checked) {
DrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(),
R.color.colorPrimary));
setTextColor(ContextCompat.getColor(getContext(), R.color.colorPrimary));
} else {
DrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(),
R.color.icon_light_enabled));
setTextColor(ContextCompat.getColor(getContext(), R.color.text_primary_light));
}
}
Дело в том, у меня есть пользовательский класс Button, который проверяемый, если флажок установлен, drawableTop и текст имеют разный цвет, что если это не проверено.
Выполнение этой работы (с appcompat 23.2.0), но теперь это не (под Android M). Поверьте мне или нет, но, делая это, когда он достигает setTint
, значок больше не виден.
Чтобы заставить его работать, я должен сделать, как следует:
DrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(),R.color.colorPrimary));
setCompoundDrawablesWithIntrinsicBounds(null, wrapDrawable, null, null);
Так каждый раз, когда я подкрасить их, я должен позвонить setCompoundDrawablesWithIntrinsicBounds
снова. Это делает все, чтобы работать снова. Тем не менее, я немного обеспокоен тем, что каждый раз настраивать каждый раз. В принципе, мне интересно, есть ли лучший способ или что-то, чего я не вижу.
Я знаю Button
имеет setCompoundDrawableTintList
который бы дивно, но ее минимальный API соответствует уровню 23.
Какое отношение это имеет к 'VectorDrawable'? – pskink
Я считаю, что вы - это НЕ видно. Замена выталкиваемого тонированным сделала трюк. Спасибо за 'ContextCompat.getColor (getContext(), R.color.colorPrimary)'! –