为什么在 MaterialCardView 中设置 shapeAppearanceModel 会停止子剪裁?

问题描述

我的用例是为 com.google.android.material.card.MaterialCardView 编辑 shapeAppearanceModel

card.shapeAppearanceModel = card.shapeAppearanceModel
            .toBuilder()
            .setTopEdge(TriangleEdgeTreatment(triangleSize))
            .build()

以上代码按预期工作,但由于上面以编程方式设置了 shapeAppearanceModel

xml

 <com.google.android.material.card.MaterialCardView
        android:id="@+id/card"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:cardBackgroundColor="?myCustomColor"
        app:cardCornerRadius="8dp"
        app:cardElevation=4dp"
        app:cardPreventCornerOverlap="true"
        app:cardUseCompatPadding="false">

    <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/myImageDrawable"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
</com.google.android.material.card.MaterialCardView>

在 Android studio 中,由于 TopEdge 以编程方式定义,编辑器不会复制错误,但在模拟器/真实设备中,子项不会被剪裁,圆角被 ImageView 重叠。

当我删除 shapeAppearanceModel 设置时,剪切工作的 正如预期的那样。

屏幕截图

Bug

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)