简体   繁体   中英

When I change the background of a Card view, the corner radius is reset

The situation is that when I modify a Card view background from a program then the corner radius of the Card view reset. But why?
(I don't think I need to provide any other information (code, picture of the result, etc.), because I think it's clear enough to understand. If you need more information then you should write down in a comment.)

If you try to use CardView with corner radius you will face this problem when you set background color dynamically. Please use yourCardView.setCardBackgroundColor() methord instead of yourCardView.setBackgroundColor() :)

I found a solution to the question.
I needed to retrieve the background of the view and set its color, then I assigned the new background to the view.

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

(This answer helped: https://stackoverflow.com/a/18394982/9377499 )

Same problem and fix the problem this way

At first, create the shape named in Drawable "shape_background_cardview" and this add below code

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

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

</shape>

step second, set the shape to the background CardView yourself

yourCardView.setBackgroundResource(R.drawable.shape_background_cardview);

GoodLuck

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM