RecyclerView 卡片。如何使用卡片角半径设置渐变背景?

RecyclerView cards. How to set gradient background with Card corner radious?

我想将自定义 gradient background 设置为 recyclerView cards 也保持 cardCornerRadius 已在 xml 代码中设置。
Gradinet background 我在 adapter 中设置了命令:
holder.itemView.setBackground(R.drawable.gradient1);
问题是,当我使用上面的代码时 cardCornerRadius 消失了。 我知道我必须使用例如 ((CardView)holder.itemView).setCardBackgroundColor(Color.RED);
但它要求参数中的颜色为整数。
在我的代码中有 gradient(drawable) 作为背景。
那么我怎样才能将渐变网用作带角半径的背景呢?
如果可能的话,我想在 xml 代码中保留 cardCornerRadious 参数。
我不想以编程方式设置它。

试试这个代码..

cornerLeft = 80f;
cornerTop = 80f;
cornerRight = 80f;
cornerBottom = 80f;


mMainUserInfo.setBackground(getLayoutBackgroundGrad(cornerLeft, cornerTop, cornerRight, cornerBottom));

    
public GradientDrawable getLayoutBackgroundGrad(float cornerLeft, float cornerTop, float cornerRight, float cornerBottom) {
    try {
        GradientDrawable gradient = new GradientDrawable(
                Orientation.BOTTOM_TOP, new int[]{
                Color.parseColor("#ffe259"),
                Color.parseColor("#ffa751")});
        gradient.setShape(GradientDrawable.RECTANGLE);
        gradient.setCornerRadii(new float[]{cornerLeft, cornerLeft, cornerTop, cornerTop,
                cornerRight, cornerRight, cornerBottom, cornerBottom});
        // int color = Color.parseColor(strockColor);
        // gradient.setStroke(1, color);
        return gradient;
    } catch (Exception e) {
        return null;
    }
}

如果您不想以编程方式设置它,您可以尝试此解决方法。

<androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardElevation="2dp"
        app:cardCornerRadius="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/round_corner">

        </LinearLayout>

    </androidx.cardview.widget.CardView>

round_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    
    <gradient
        android:angle="270"
        android:endColor="#B9ED5050"
        android:startColor="#B9534A4A" />

</shape>