1.CardView是什么?
CardView最开始是流行在Google+上的,后来越来越多的APP也使用了这样一种新特性引入了Card的这样一种新的布局方式(卡片式布局),因此在Android5.0系统上,随着Material Design的一种设计理念的推出,Google就索性提供了CardView控件,方便开发者的使用。
其实CardView也是一个容器类布局,不同的是它提供了卡片这样的一种形式,开发者可以定义卡片的大小与视图的高度,并且设置圆角的角度,这就相当于FragmentLayout布局控件然后添加圆角及阴影的效果。CardView作为一种容器使用,经常会用在ListView和RecyclerView的Item布局中。
2.代码中具体实现
CardView是一个新增加的UI控件,通过查看源码我们可以知道CardView继承自FrameLayout,所以CardView实际上就是一个ViewGroup,既然是ViewGroup我们就可以在CardView中添加控件和布局, CardView还有一些新增的属性:
- app:cardBackgroundColor 设置背景色
- app:cardCornerRadius 设置圆角大小
- app:cardElevation 设置z轴阴影
- app:cardMaxElevation 设置z轴最大高度值
- app:cardUseCompatPadding 是否使用CompadPadding
- app:cardPreventCornerOverlap 是否使用PreventCornerOverlap
- app:contentPadding 内容的padding
- app:contentPaddingLeft 内容的左padding
- app:contentPaddingTop 内容的上padding
- app:contentPaddingRight 内容的右padding
- app:contentPaddingBottom 内容的底padding
下面就利用这些新增的属性模仿绘制一张身份证,在AndroidStudio中想要使用CardView就需要先在Gradle中添加CardView包的依赖。
实现后的效果:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:cardview-v7:25.0.0'
testCompile 'junit:junit:4.12'
}
然后就可以在XML中进行相关的布局,需要注意的是在布局文件中使用CardView之前需要引入一个新的名字空间—xmlns:app="http://schemas.android.com/apk/res-auto"来添加,这样才可以通过自定义的名字空间来