1.简介:
Android5.0出现的,继承自FrameLayout,可以当成FrameLayout来使用,可以设置其圆角和阴影效果,不用再去写shape来实现圆角了;
2.使用 Gradle 依赖
compile 'com.android.support:cardview-v7:23.2.0'
3.布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
//对应下面的app
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
//更布局声明的命名空间:app
app:cardBackgroundColor="@color/colorAccent"
app:cardCornerRadius="10dp"
app:cardElevation="5dp"
app:cardPreventCornerOverlap="true"
app:contentPadding="15dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我在cardview里面"
android:textColor="@android:color/white"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我也在cardview里面"
android:layout_marginTop="10dp"
android:textColor="@android:color/white"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
4.属性介绍
属性 作用
card_view:cardElevation 阴影高度(cardview边缘向外扩散的阴影高度)
card_view:cardMaxElevation 阴影最大高度
card_view:cardBackgroundColor 卡片的背景色
card_view:cardCornerRadius 卡片的圆角大小
card_view:contentPadding 卡片内容于边距的间隔
card_view:contentPaddingBottom 卡片内容与底部的边距
card_view:contentPaddingTop 卡片内容与顶部的边距
card_view:contentPaddingLeft 卡片内容与左边的边距
card_view:contentPaddingRight 卡片内容与右边的边距
card_view:contentPaddingStart 卡片内容于边距的间隔起始
card_view:contentPaddingEnd 卡片内容于边距的间隔终止
card_view:cardUseCompatPadding 设置内边距,V21+的版本和之前的版本仍旧具有一样的计算方式
card_view:cardPreventConrerOverlap 在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠
5.添加波纹点击效果
默认情况,CardView是不可点击的,并且没有任何的触摸反馈效果。
为了实现触摸反馈效果,你必须提供一下属性:
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/colorAccent"
app:cardCornerRadius="10dp"
app:cardElevation="5dp"
app:cardPreventCornerOverlap="true"
app:contentPadding="15dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
>
添加上面两行代码后实现的效果:
5.0版本以及更高版本可以使CardView点击产生波纹的效果,由触摸点向外扩散;
5.0版本以下有一个触摸阴影效果;