Проверьте эту проблему на MaterialCardView
(но то же самое с androidx.cardview.widget.CardView
)
Это связано с сглаживанием. Фон и обводка рисуются на одних и тех же пикселях , но в зависимости от цвета обводки прозрачные пиксели, добавленные AA, могут вызывать проступание. Вот почему вы не увидите его, если перевернете цвета здесь.
Вы можете добиться того же вида, просто используя
<com.google.android.material.card.MaterialCardView
app:cardBackgroundColor="@color/...."
app:strokeWidth="3dp"
app:strokeColor="@color/white />
Как видите:
У вас есть другой вариант.
Вы можете применить то же самое ShapeAppearanceModel
( предоставляется по умолчанию MaterialCardView
) для простого View
(или Layout
) инвертирования цветов и с применением поля к внутреннему виду.
<com.google.android.material.card.MaterialCardView
app:cardCornerRadius="@dimen/corner_radius_16"
app:cardBackgroundColor="@color/white">
<View
android:layout_margin="3dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_rounded"/>
</com.google.android.material.card.MaterialCardView>
А потом:
float size = getResources().getDimension(R.dimen.cutout_size);
View viewRounded = findViewById(R.id.view_rounded);
ShapeAppearanceModel shapeAppearanceModelView = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius16)
.build();
MaterialShapeDrawable shapeDrawableView = new MaterialShapeDrawable(shapeAppearanceModelView);
shapeDrawableView.setFillColor(ContextCompat.getColorStateList(this,R.color.xxx));
ViewCompat.setBackground(viewRounded,shapeDrawableView);