Как через код изменить background у cardView?
В таком виде код не компилируется:
binding.cardView.setCardBackgroundColor(R.colors.color_1);
Ответы (2 шт):
Автор решения: Yura Ivanov
→ Ссылка
Данный метод принимает цвет, а не ресурс. Надо так:
binding.cardView.setCardBackgroundColor(
ContextCompat.getColor(getContext(), R.colors.color_1));
Автор решения: Vadik
→ Ссылка
Внимательно смотрите сигнатуры методов, которые вызываете. Приведенный вами метод setCardBackgroundColor принимает на вход @ColorInt. А то, что вы пытаетесь передать — это айди ресурса, @ColorRes (или @DrawableRes в более широком смысле).
Вам нужно преобразовать айди ресурса в цвет (как уже ответил @Yura):
@ColorInt int color = ContextCompat.getColor(this, R.color.black);
cardView.setCardBackgroundColor(color)
Либо просто воспользоваться другим методом, setBackgroundResource, у которого на входе int с аннотацией @DrawableRes. В качестве @DrawableRes можно передавать @ColorRes:
@ColorRes int colorRes = R.color.black;
cardView.setBackgroundResource(colorRes);
Вот тут можно посмотреть, какие еще бывают аннотации.