解决使用CardView做背景,popwindow不显示阴影的问题

不显示阴影

在这里插入图片描述

显示阴影

在这里插入图片描述

注意事项

1.popwindow背景要透明

 // 设置背景和动画
        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

原因

这是因为PopupWindow的背景会覆盖在CardView的上层。如果PopupWindow的背景不设置为透明,它会遮挡住下面CardView的阴影效果。当我们把PopupWindow的背景设置为透明时,CardView的阴影就能够正常显示出来了。这是Android视图层级渲染的一个特性,PopupWindow的背景会作为最顶层绘制。

xml布局

主要要配置这两个属性

在这里插入图片描述

为什么要用cardBackgroundColor

CardView 的阴影效果实际上需要依赖于背景色的设置。当你设置了 cardBackgroundColor 时,CardView 才能正确计算出阴影的边界和形状。如果没有设置背景色,或者背景色是透明的,CardView 就无法准确判断应该在哪里绘制阴影,因为阴影是基于卡片实体的轮廓来生成的。这就是为什么设置了背景色后阴影就会显示出来的原因。

为什么要用cardUseCompatPadding

cardUseCompatPadding=“true” 是必需的,因为它解决了 CardView 在不同 Android 版本上的兼容性问题。当设置为 true 时,CardView 会在所有 Android 版本上使用相同的 padding 策略来显示阴影。如果不设置这个属性,在 Android 5.0 以下版本和 5.0 及以上版本中,CardView 的阴影效果会有明显的差异,特别是在边距和阴影大小方面。这个属性确保了在所有 Android 版本中保持一致的视觉效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值