MaterialCardView在使用圆角时剪辑它的孩子。如果我使用cardCornerRadius = true (它对卡的所有四个角进行舍入),裁剪的行为就像预期的那样,->子区域不会被绘制到圆角区域之外。如果我尽量少转弯处的话.只有顶部的角,使用ShapeAppearanceModel),然后剪裁部分丢失->一个顶部定位的孩子将被画在圆角区域))。
我意识到MaterialCardView调用了setShapeAppearanceModel内部的setClipToOutline(shapeAppearanceModel.isRoundRect(getBoundsAsRectF()));,isRoundRect只有在所有四个角都是圆角的情况下才返回真,所以我尝试在将shapeAppearanceModel设置为顶部圆角之后,在MaterialCardView上应用clipToOutline = true,但没有类似的结果--孩子们仍然能够在父母卡的圆角部分上画出来。
究竟是什么触发了裁剪部分,如何在顶部圆形的MaterialCardView上强制执行?
LE:试错码:
// card is MaterialCardView
card.shapeAppearanceModel =
ShapeAppearanceModel()
.toBuilder()
.setTopRightCorner(CornerFamily.ROUNDED, cornerPx) // cornerPx = 24dp in pixels
.setTopLeftCorner(CornerFamily.ROUNDED, cornerPx)
.build()
card.apply {
preventCornerOverlap = true
clipChildren = true
clipToOutline = true
}
card.invalidateOutline()发布于 2022-04-11 09:35:57
如果您使用形状外观覆盖以防止儿童与角重叠,则应用以下配置:
cardPreventCornerOverlap设置为true那么你应该看到这样的东西:

https://stackoverflow.com/questions/71824566
复制相似问题