Когда я меняю фон карты, радиус угла сбрасывается

Ситуация такова, что когда я изменяю фон вида Card из программы, радиус угла вида Card сбрасывается. Но почему?
(Я не думаю, что мне нужно предоставлять какую-либо другую информацию (код, изображение результата и т. д.), потому что я думаю, что это достаточно ясно для понимания. Если вам нужна дополнительная информация, вы можете следует написать в комментарии.)


person Noel Nemeth    schedule 14.04.2018    source источник


Ответы (3)


Если вы попытаетесь использовать CardView с угловым радиусом, вы столкнетесь с этой проблемой при динамической установке цвета фона. Пожалуйста, используйте метод yourCardView.setCardBackgroundColor() вместо yourCardView.setBackgroundColor() :)

person Dulanga    schedule 30.07.2018

Я нашел решение вопроса.
Мне нужно было получить фон представления и установить его цвет, а затем я назначил новый фон представлению.

Drawable backgroundOff = v.getBackground(); //v is a view
backgroundOff.setTint(defaultColor); //defaultColor is an int 
v.setBackground(backgroundOff);

(Этот ответ помог: https://stackoverflow.com/a/18394982/9377499)

person Noel Nemeth    schedule 15.04.2018
comment
Работает как шарм, например, когда вы хотите изменить цвет каждого другого CardView внутри RecyclerView и сохранить закругленные углы. Во время процесса вы можете получить доступ только к CardView элементам как android.view.View itemViews, у которых есть метод setBackgroundColor() (он не работает), но нет доступного метода setCardBackgroundColor(). - person Theta; 28.11.2020

Та же проблема и решить проблему таким образом

Сначала создайте фигуру с именем Drawable shape_background_cardview и добавьте код ниже.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid android:color="@color/gray500" />
<corners android:radius="5dp" />

</shape>

шаг второй, установите фигуру на фон CardView самостоятельно

yourCardView.setBackgroundResource(R.drawable.shape_background_cardview);

Удачи

person Mohamad    schedule 27.09.2020