不显示阴影
显示阴影
注意事项
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 版本中保持一致的视觉效果。