CardView的那点事儿
概述
官方说明和文档
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的那点事儿相关推荐
- Android之CardView
文章目录 一.常用属性 二.属性效果展示 三.案例展示 具体代码: 1.一个最简单的示例: 2.复杂化 四.案例 1.布局搭建 2.实体类创建 3.功能实现 4.适配 CardView继承FrameL ...
- CardView(墨客)
<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="ht ...
- webassembly类型_WebAssembly 那些事儿
WebAssembly 那些事儿 什么是 WebAssembly? WebAssembly 是除 JavaScript 以外,另一种可以在网页中运行的编程语言,并且相比之下在某些功能和性能问题上更具优 ...
- 计算机网络技术社团纳新海报,精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~...
原标题:精品社团纳新 | 加入计算机协会和我一起做些有意义的事儿吧~ 我们是谁? 计算机协会 社团 简介 社团名称:计算机协会 创办时间:2012年 组成部门:技术部,宣传部,秘书部,外联部,策划部. ...
- Linux那些事儿 之 戏说USB(33)字符串描述符
关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...
- Linux那些事儿 之 戏说USB(28)设备的生命线(十一)
现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都彼此的挤在一起,所以得想 ...
- Linux那些事儿 之 戏说USB(27)设备的生命线(十)
跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂.再给张小表,看看现在和上次那张表出现的时候有什么变化. state USB_STATE_ADDRESS sp ...
- Linux那些事儿 之 戏说USB(25)设备的生命线(八)
回到struct usb_hcd,继续努力的往下看. 7行,又见kref,usb主机控制器的引用计数.struct usb_hcd也有自己专用的引用计数函数,看drivers/usb/core/hcd ...
- Linux那些事儿 之 戏说USB(22)设备的生命线(五)
下面接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义. struct ur ...
最新文章
- python 单元测试setup执行了多次_python单元测试setUp与tearDown
- android getitem,android – ItemDecoration重写getItemOffsets()和动画
- Python 存储模型
- 法国spin高等计算机学校,法国顶尖“大矿”,一起去矿校挖矿吧!
- C#的循环语句(一)
- BZOJ 2957 楼房重建-线段树
- typora打开pdf文件提示文件过大_Win7/Win10拷贝到U盘容量足够却提示文件过大的解决方法...
- Nvidia CUDA初级教程4 GPU体系架构概述
- 【论文写作】SpringMVC学籍管理系统如何画用例图(2)
- 什么是网关软件?国内有好的资源网关软件吗?
- 豪华版飞机大战系列(三)
- idea中pom中有些配置为什么不提示_Delegate IDE build/run actions to maven 配置的影响
- 用计算机模拟实验技术路线,自然科学基金申请书模板
- 基于Xilinx的FPGA下载配置详解及几种电路参考设计
- html调用如何使用jeecms库,JEECMS标签使用实例教程-序
- 【退役贴】再见了ACM,再会了算法竞赛
- 查看Win7电脑密钥期限
- 人工智能在教育方面应用的思考(一)
- linux 设置自动退出时间,linux配置超时不操作自动退出登录TMOUT
- JAVA版opencv透明,opencv 替换纯色背景为透明背景