CardView

  • 介绍
    由appcompat-v7库提供,实际上,CardView也是一个FrameLayout,但是额为的提供了圆角和阴影等效果。

    compile 'com.android.support:cardview-v7:25.1.0'
    
  • 使用
    简单使用:

    
        
    
    

这就是简单使用,使用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 ( 属性),随便命
          个名(如 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

你可能感兴趣的:(CardView)