CardView - 符合MD设计风格的卡片式控件,可以方便的添加阴影效果和圆角效果,看上去有层次感,使用也非常简单,直接在我们的布局外面套上该控件即可,但是使用还是有坑,分享一下。
1.如果使用cardview,设置边距的时候,一定要使用margin 而不能使用padding,如果使用了padding,就显示不出阴影效果了,而且看上去被吃掉的感觉;阴影效果的显示是基于你的margin的,如果你margin设的小,看上去的阴影不是很完全,margin设的大一点,看上去的阴影比较完整。
2.
在android5.1以上使用cardview,一切使用正常,但是在android5.0及以下,就出现了如上的图,周围都出现了白边,另外本身如果是圆角效果,但是里面的内容是方的话,就会有顶出去的感觉,查看cardview的文档,发现其中有一个属性cardPreventCornerOverlap
|
|
cardPreventCornerOverlap默认为true,意思是阻止API 20或者之前的CardView的corner和内部元素重叠。没有重叠就产生了上边的效果,多了一条白边。
所以,为什么会出现上图的原因,就是cardview里面的元素和cardview重叠了,但是元素本身没有圆角,所以顶点伸出去了。还有就是这个属性导致的,在低版本中都添加了内边距,那么处理办法就是:
1.
在xml中cardview添加以下属性,设置cardview的元素不与cardview重叠
|
|
2.
如果背景设置有圆角,我们可以通过shape来画圆角背景给父布局,或者使用自定义的view来设置ImageView圆角,这样就能够向下兼容了。