解决PopupWindow中CardView阴影不显示(无效)的问题

谷歌Design库里的控件还是很香的,CardView是Material Design的核心控件之一。
今天就用它来做一个小弹窗,大概是想要这种效果:
效果图
布局文件很简单,我定义了圆角和阴影:

<android.support.v7.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    app:cardCornerRadius="6dp"
    app:cardElevation="6dp">
    ...

燃鹅,在我可爱的测试机上面跑了一下,发现并没有阴影,只有圆角。如果界面背景也是卡片的白色,就完全看不出来卡片的轮廓了。
很久之前我用CardView写过列表的item布局,完全没遇到这种问题啊,怎么肥事?
搜了下网上的博客:
关于CardView无法显示阴影的问题
CardView设置阴影无效的问题
依然没有解决我的问题,如果大家通过上述大佬的博客解决了,那后面不用看了。如果没解决,可以继续看,或许可以帮到你哦!
后来我意识到我的CardView是PopupWindow的根布局,可能Pop弹窗的层级和当前Activity页面层级不一样?带着这个猜测,我给CardView加上了z轴属性:

<android.support.v7.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:translationZ="6dp"
    app:cardCornerRadius="6dp"
    app:cardElevation="6dp">
    ...

dp大小自己随便定义,大于0即可,然后就成功显示阴影了。在Material Design中,控件在空间中不再只有x和y两轴平面坐标系,而是立体的,还有z轴,值越大,表示越高,可以理解为离用户的视距越近。
不过具体内部原理还不太清楚,或许也不是PopupWindow导致的,还待进一步研究。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值