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>
我想将自定义 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>