Android5.0中向我们介绍了一个全新的控件–CardView,从本质上看,可以将CardView看做是FrameLayout在自身之上添加了圆角和阴影效果。请注意:CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为一种容器使用。

CardView应该被使用在显示层次性的内容时;在显示列表或网格时更应该被选择,因为这些边缘可以使得用户更容易去区分这些内容。

使用CardView

首先,假设你的布局如同下面的形式:

<FrameLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</FrameLayout>

为了使用上面的布局方式来创建一个卡片,首先你需要导入支持的依赖库(android-support-v7-cardview的jar包)在你的build.gradle文件中。

dependencies {...compile 'com.android.support:cardview-v7:21.0.2'
}

现在将FrameLayout替换为CardView,

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</android.support.v7.widget.CardView>

就是这样!使用依赖库能够保证你的程序稳定的兼容之前的版本;尽管在AndroidL和之前的Android版本中对其处理方式有所不同。

定制CardView

CardView提供了一个默认的elevation(意为CardView的Z轴阴影)和圆角角度,所以每一个卡片都能够在不同的设备上保持相同的外观。然而,你也可以根据自己的需求去定制这些值。

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"card_view:cardCornerRadius="8dp"card_view:cardElevation="8dp"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</android.support.v7.widget.CardView>

注意:cardElevation属性被用来决定阴影的大小以及柔和度,以至于可以逼真的模拟出对于深度效果的描述。

添加波纹点击效果

默认情况,CardView是不可点击的,并且没有任何的触摸反馈效果。触摸反馈动画在用户点击CardView时可以给用户以视觉上的反馈。为了实现这种行为,你必须提供一下属性:

<android.support.v7.widget.CardView...android:clickable="true"android:foreground="?android:attr/selectableItemBackground">...
</android.support.v7.widget.CardView>

使用android:foreground=”?android:attr/selectableItemBackground”可以使CardView点击产生波纹的效果,有触摸点向外扩散。

对更早的版本的支持

在AndroidL之前的设备上,CardView为了支持圆角的效果加上了padding,圆角剪裁操作可以算是很昂贵的操作。相似的,对阴影效果来说,在AndroidL之前,也会提供padding去绘制阴影面积,这些内容的padding是和elevation属性相关的,按照文档:

padding值为:
左右两边的值为:maxCardElevation + (1 - cos45) * cornerRadius
上下两边的值为:maxCardElevation * 1.5 + (1 - cos45) * cornerRadius

因此,如果你需要给自己的内容加上padding的话,需要使用新的属性:card_view:contentPadding
相似的,如果改变CardView的背景,也需要使用新的属性:card_view:cardBackgroundColor

原文出处

原文来自:Using the CardView

Android开发--CardView使用相关推荐

  1. Android开发-CardView卡片View的详解,头条三面技术四面HR

    CardView一般用于需要显示阴影效果的UI,此外CardView还提供了圆角的功能.(嘿嘿,这东西还能直接设置成圆形,可以简单的弄成圆形View).CardView其实本身是使用FrameLayo ...

  2. Android开发笔记(序)写在前面的目录

    知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...

  3. Android开发笔记(一百二十四)自定义相册

    画廊Gallery Gallery是一个早期的画廊控件,左右滑动手势可展示内嵌的图片列表,类似于一个平面的万花筒.虽然Android现在将Gallery标记为Deprecation(表示已废弃),建议 ...

  4. Android开发如何进阶,薪资如何跟上年龄的脚步?,深度解读Netty

    封装.继承.多态. 2 . 程序设计的6大原则: 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 了解这6大设计原则是非常有必要的,它能指导你的程序整个结构的设计和规范. ...

  5. Android开发:开源库集合

    开源库大全 目录 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 ViewPager 图表(Chart) 菜单(Men ...

  6. android 开发从入门到精通

    Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...

  7. Android开发笔记(序)

    本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...

  8. Android开发常用网站推荐以及代码库推荐

    一 学习网站 Android官方文档 - Google官方推荐Android学习网站 Google Samples - Android系统每次推出一些新特性,Google都会写一些Demo放在Gith ...

  9. Android开发笔记(序)写在前面的目录大全

    转自  湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...

最新文章

  1. Andorid自定义attr的各种坑
  2. NLP顶级专家Dan Roth :自然语言处理领域近期的任务和主要应用
  3. 循环: 打印1~10
  4. 一个简单的三层架构例子(.NET入门)
  5. Python 基础练习
  6. java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
  7. 【转】git hub 使用小结
  8. 牛客14350 苦逼的单身狗
  9. 计算机常用控温算法,常用温度控制方法原理 -解决方案-华强电子网
  10. oracle 设置 shmmax,安装ORACLE时在Linux上设置内核参数的含义
  11. git21天打卡-day5 day6 day7
  12. mexcuda中矩阵数据的传输
  13. hao643.com劫持(IE和Chrome等被修改快捷方式跳转到hao123.com)
  14. 机器学习数学基础 - 导数和偏导数
  15. 【C语言】如何判断一个数字是否为素数(质数)?
  16. 目标客户画像_数据运营实战(一):细分目标人群,结合用户画像的实践
  17. win7c盘空间越来越小_C盘空间越来越小怎么办,5个步骤无损扩容1招就搞定
  18. 反黑教程:手把手教你应对搜索引擎劫持攻击
  19. 玩传奇的伙计们,很久没发朋友圈了吧,今天给大家找到一些朋友圈高逼格文案。
  20. Oracle存储过程中声明数组

热门文章

  1. 虽然Orbit被砍掉了,还是可以窥见一斑
  2. Mac node切换版本,指定版本
  3. OpenGL实验2:图形的旋转、平移、缩放
  4. SVN学习笔记11 -- Eclipse 中 SVN的相关操作 -- checkout and update
  5. 自己接软件项目,如何报价??
  6. 吉林大学计算机孙磊,室内灯光控制系统设计毕业论文.doc
  7. 中文分词多领域语料库
  8. 光端机、光纤收发器与光猫三者之间的区别介绍
  9. X线DR医学图像 --- 直方图的窗宽窗位调整(Matlab篇)
  10. 数组队列存储结构的简单实现例子