Android给CardView加边框以及水波纹效果

最近开发App遇到一个效果,先看效果如下图,就是列表中item每个都是CardView,然后cardView有一个边框红色或者其他颜色,还需要item点击有水波纹效果。
Android给CardView加边框以及水波纹效果_第1张图片

设置边框,圆角等我们很自然的想到了shape,先定义shape,


<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp" />
    <stroke android:width="2dp"
        android:color="@color/color_red"/>
    <solid android:color="#ffffff" />
shape>

然后设置android:background=”@drawable/shape_red_border_white_bg”,这样就可以了。但是水波纹呢,水波纹我们一般也是用的background属性:android:background=”?attr/selectableItemBackground”,这样就冲突了,好在还有一个属性叫foreground。我们在加一行android:foreground=”?attr/selectableItemBackground”就行了,既可以设置背景shape,又可以设置水波纹

但是需要注意的是不是所有的情况都可以使用android:foreground并且有效的,根据这里
http://blog.csdn.net/tyzlmjj/article/details/50125081

View源码中的一段
case R.styleable.View_foreground:
if (targetSdkVersion >= VERSION_CODES.M || this instanceof FrameLayout) {
setForeground(a.getDrawable(attr));
}
break;
从上面代码可以看出,foreground属性只有在以下两种情况下生效:
1. 安卓M版本(6.0)及以上
2. FrameLayout本身及其子类

你可能感兴趣的:(Android效果)