概述

官方说明和文档

CardView官方API

创建列表与卡片

类继承关系:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.support.v7.widget.CardView


从官方的文档中我们可以看出:

CardView:有圆角的背景和阴影的FrameLayout。

CardView 扩展 FrameLayout 类别并让您能够显示卡片内的信息,这些信息在整个平台中拥有一致的呈现方式。CardView 小组件可拥有阴影和圆角。

如果要使用阴影创建卡片,请使用 card_view:cardElevation 属性。CardView 在 Android 5.0(API 级别 21)及更高版本中使用真实高度与动态阴影,而在早期的 Android 版本中则返回编程阴影实现。如需了解详细信息,请参阅保持兼容性

使用以下属性定制 CardView 的外观:

  • 如果要在布局中设置圆角半径,请使用 card_view:cardCornerRadius 属性。
  • 如果要在代码中设置圆角半径,请使用 CardView.setRadius 方法。
  • 如果要设置卡片的背景颜色,请使用 card_view:cardBackgroundColor 属性。

常用属性:

  • card_view:cardElevation 阴影的大小
  • 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和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠

一般来说和RecyclerView搭配起来使用效果更加~


如何使用

添加依赖项

RecyclerView 与 CardView 小组件为 v7 支持内容库的一部分

将这些 Gradle 依赖项添加至您的应用模块

dependencies {...compile 'com.android.support:cardview-v7:21.0.+'compile 'com.android.support:recyclerview-v7:21.0.+'
}

布局文件中编写CardView

注意事项:
如果使用 card_view:cardCornerRadius 或者 card_view:cardBackgroundColor,布局文件根布局中需要添加namespace,如下:

xmlns:card_view=”http://schemas.android.com/apk/res-auto”

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:card_view="http://schemas.android.com/apk/res-auto"... ><!-- A CardView that contains a TextView --><android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"android:id="@+id/card_view"android:layout_gravity="center"android:layout_width="200dp"android:layout_height="200dp"card_view:cardCornerRadius="4dp"><TextView
            android:id="@+id/info_text"android:layout_width="match_parent"android:layout_height="match_parent" /></android.support.v7.widget.CardView>
</LinearLayout>

示例

效果图

5.0以上的效果


5.0以下版本的效果

Code

CardViewAct.java

package demo.turing.com.materialdesignwidget.cardView;import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.widget.SeekBar;
import android.widget.Toast;import demo.turing.com.materialdesignwidget.R;public class CardViewAct extends AppCompatActivity {private CardView mCardView;private SeekBar mRadiusSeekBar,mElevationSeekBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_card_view);mCardView = (CardView)findViewById(R.id.cardview);mRadiusSeekBar = (SeekBar)findViewById(R.id.cardview_radius_seekbar);mRadiusSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){@Overridepublic void onStopTrackingTouch(SeekBar seekBar){// TODO Auto-generated method stub}@Overridepublic void onStartTrackingTouch(SeekBar seekBar){// TODO Auto-generated method stub}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser){mCardView.setRadius(progress);}});mElevationSeekBar = (SeekBar)findViewById(R.id.cardview_elevation_seekbar);mElevationSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}/***  加了 @TargetApi(Build.VERSION_CODES.LOLLIPOP)*  在API21上运行时没有问题的,但是低版本的会报错,最好做下判断* @param seekBar* @param progress* @param fromUser*/@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {mCardView.setElevation(progress);} else{Toast.makeText(CardViewAct.this,"5.0以下版本不支持~",Toast.LENGTH_SHORT).show();}}});}
}

activity_card_view.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:card_view="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayout
        android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"><android.support.v7.widget.CardView
            android:id="@+id/cardview"android:layout_width="fill_parent"android:layout_height="160dp"android:layout_marginLeft="@dimen/margin_large"android:layout_marginRight="@dimen/margin_large"android:elevation="100dp"card_view:cardBackgroundColor="@color/cardview_initial_background"card_view:cardCornerRadius="8dp"><TextView
                android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_margin="@dimen/margin_medium"android:text="@string/cardview_contents"/></android.support.v7.widget.CardView><LinearLayout
            android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="@dimen/margin_large"android:orientation="horizontal"><TextView
                android:layout_width="@dimen/seekbar_label_length"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="@string/cardview_radius_seekbar_text" /><SeekBar
                android:id="@+id/cardview_radius_seekbar"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="@dimen/margin_medium" /></LinearLayout><LinearLayout
            android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextView
                android:layout_width="@dimen/seekbar_label_length"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="@string/cardview_elevation_seekbar_text" /><SeekBar
                android:id="@+id/cardview_elevation_seekbar"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="@dimen/margin_medium" /></LinearLayout></LinearLayout></ScrollView>

更多注意事项~

CardView的那点事儿相关推荐

  1. Android之CardView

    文章目录 一.常用属性 二.属性效果展示 三.案例展示 具体代码: 1.一个最简单的示例: 2.复杂化 四.案例 1.布局搭建 2.实体类创建 3.功能实现 4.适配 CardView继承FrameL ...

  2. CardView(墨客)

    <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="ht ...

  3. webassembly类型_WebAssembly 那些事儿

    WebAssembly 那些事儿 什么是 WebAssembly? WebAssembly 是除 JavaScript 以外,另一种可以在网页中运行的编程语言,并且相比之下在某些功能和性能问题上更具优 ...

  4. 计算机网络技术社团纳新海报,精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~...

    原标题:精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~ 我们是谁? 计算机协会 社团 简介 社团名称:计算机协会 创办时间:2012年 组成部门:技术部,宣传部,秘书部,外联部,策划部. ...

  5. Linux那些事儿 之 戏说USB(33)字符串描述符

    关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...

  6. Linux那些事儿 之 戏说USB(28)设备的生命线(十一)

    现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都彼此的挤在一起,所以得想 ...

  7. Linux那些事儿 之 戏说USB(27)设备的生命线(十)

    跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂.再给张小表,看看现在和上次那张表出现的时候有什么变化. state        USB_STATE_ADDRESS sp ...

  8. Linux那些事儿 之 戏说USB(25)设备的生命线(八)

    回到struct usb_hcd,继续努力的往下看. 7行,又见kref,usb主机控制器的引用计数.struct usb_hcd也有自己专用的引用计数函数,看drivers/usb/core/hcd ...

  9. Linux那些事儿 之 戏说USB(22)设备的生命线(五)

    下面接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义. struct ur ...

最新文章

  1. python 单元测试setup执行了多次_python单元测试setUp与tearDown
  2. android getitem,android – ItemDecoration重写getItemOffsets()和动画
  3. Python 存储模型
  4. 法国spin高等计算机学校,法国顶尖“大矿”,一起去矿校挖矿吧!
  5. C#的循环语句(一)
  6. BZOJ 2957 楼房重建-线段树
  7. typora打开pdf文件提示文件过大_Win7/Win10拷贝到U盘容量足够却提示文件过大的解决方法...
  8. Nvidia CUDA初级教程4 GPU体系架构概述
  9. 【论文写作】SpringMVC学籍管理系统如何画用例图(2)
  10. 什么是网关软件?国内有好的资源网关软件吗?
  11. 豪华版飞机大战系列(三)
  12. idea中pom中有些配置为什么不提示_Delegate IDE build/run actions to maven 配置的影响
  13. 用计算机模拟实验技术路线,自然科学基金申请书模板
  14. 基于Xilinx的FPGA下载配置详解及几种电路参考设计
  15. html调用如何使用jeecms库,JEECMS标签使用实例教程-序
  16. 【退役贴】再见了ACM,再会了算法竞赛
  17. 查看Win7电脑密钥期限
  18. 人工智能在教育方面应用的思考(一)
  19. linux 设置自动退出时间,linux配置超时不操作自动退出登录TMOUT
  20. JAVA版opencv透明,opencv 替换纯色背景为透明背景

热门文章

  1. python break -else 语句
  2. ssh 到另一台机器执行命令
  3. Attention Is All You Need (transformer)
  4. python编程基础(一):编程思想
  5. 推荐系统笔记:基于潜在因子模型的协同过滤(latent factor model)
  6. async function_掌握 Async/Await
  7. Python入门100题 | 第027题
  8. pandas中关于DataFrame计算时间差(加减)
  9. 序列号生成的另一种玩法
  10. feign client传递对象