-
介绍
由appcompat-v7库提供,实际上,CardView也是一个FrameLayout,但是额为的提供了圆角和阴影等效果。compile 'com.android.support:cardview-v7:25.1.0'
-
使用
简单使用:<android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" app:cardCornerRadius="5dp" android:elevation="5dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Hello World " /> </android.support.v7.widget.CardView>
这就是简单使用,使用cardview包裹住需要的控件就可以了,它是一个布局,
类似与Framelayout,你想展示这个效果的都可以放在里面。但是一般还是嵌套一个Linearlayout等,因为其没有方向。
```
属性介绍
```
app:cardBackgroundColor这是设置背景颜色
app:cardCornerRadius这是设置圆角大小 ,数值越大,圆角的弧度也就越大。
app:cardElevation这是设置z轴的阴影 ,指定卡片的高度,高度值越大,投影范围越大,但是投影效果越淡。
app:cardMaxElevation这是设置z轴的最大高度值,方便协调者布局。
app:cardUseCompatPadding是否使用CompatPadding
app:cardPreventCornerOverlap是否使用PreventCornerOverlap
app:contentPadding 设置内容的padding
app:contentPaddingLeft 设置内容的左padding
app:contentPaddingTop 设置内容的上padding
app:contentPaddingRight 设置内容的右padding
app:contentPaddingBottom 设置内容的底padding
```
在代码中设置
cardView = (CardView)findViewById(R.id.cardView);
cardView.setRadius(8);//设置图片圆角的半径大小
cardView.setCardElevation(8);//设置阴影部分大小
cardView.setContentPadding(5,5,5,5);//设置图片距离阴影大小
- 特殊情况(注意不同 SDK 版本(低于 Lollipop 21)上的边距(Margin)效果)
(1)Google 针对 SDK 21 以下的系统给 CardView 加入一个 Elevation 兼容 (即 XML 中的 app:cardElevation 和 Java 代码中的 setCardElevation)。 在低版本中设置了 CardElevation 之后 CardView 会自动留出空间供阴影 显示,而 Lollipop 之后则需要手动设置 Margin 边距来预留空间: 1、创建 /res/value 和 /res/value-v21 资源文件夹于项目对应 Module 目录下, 前者放置旧版本/通用的资源文件(了解的可以跳过),后者放置 21 及更高 SDK 版本的资源文件。 2、在 value 内的 dimen.xml 创建一个 Dimension (<dimen> 属性),随便命 个名(如 xxx_card_margin)并填入数值 0dp。 3、接着在 value-v21 文件夹内的 dimen.xml 创建名字相同的 Dimension, 并填入你期望的预留边距(一般和 CardElevation 阴影大小相同) 4、最后,在你布局中的 CardView 中设置 android:layout_margin="@dimen/xxx_card_margin"
这样就可以兼容不同的版本了。
为你的card 添加点击效果
如果你是用了 AppCompat v7 支持库:
那么你可以直接给 CardView 加上 android:foreground="?attr/selectableItemBackground"
这个属性会在 Lollipop 上自动加上 Ripple 效果,在旧版本则是一个变深/变亮的效果。
如果你没使用这个支持库或者觉得这个效果在旧版本显得有点僵硬:
你可以尝试自定义一个 Drawable,和上一条一样根据不同 SDK 版本分别编写不同的效果
更多参考:http://www.androidchina.net/3754.html