为CardView添加一个圆角修复工具类,如下所示:
public class CardViewUtils {
private static final int DEFAULT_RADIUS = 2;
public static void init(CardView cardView, float radius) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
cardView.setPreventCornerOverlap(false);
cardView.setRadius(radius);
ViewCompat.setElevation(cardView, 0);
}
}
public static void init(CardView cardView) {
init(cardView, dp2px(DEFAULT_RADIUS));
}
private static float dp2px(int dp) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
Resources.getSystem().getDisplayMetrics());
}
}
然后在你的Activity或Fragment中调用该工具类的init方法即可修复CardView圆角破损问题:
CardView cardView = findViewById(R.id.cardView);
CardViewUtils.init(cardView);