在android L中,发布的新控件CardView是一个MD(Meterial Design)的控件,拥有立体感的控件。
然而在实际使用中,我们必须使用兼容包进行,但是这样却又损失了部分特性。CardView的elevation也就是Z轴阴影需要在android L版本以及以上版本才会有效果,也就是说低版本根本不会有Z轴阴影效果。
而且在使用中,可能会有由于google的设置,在android studio中可以编辑,而在其他的IDE中却不行。另外如果编译不过,可能还得添加
- <uses-sdk
- xmlns:tools="http://schemas.android.com/tools"
- tools:node="replace" />
CardView继承自FrameLayout,自身是作为一个布局类使用的,一般包裹TextView等类。CardView兼容至2.0的有app:cardBackgroundColor跟app:cardCornerRadius两个属性。app:cardCornerRadius是四角的弧度,app:cardBackgroundColor是卡片的颜色。
简单点说,CardView就是一个卡片外观的布局控件,高版本有立体感。
下面是xml布局:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/cardview" android:layout_width="match_parent" android:layout_height="80dp" android:layout_margin="8dp" app:cardBackgroundColor="#505050" app:cardCornerRadius="8dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textSize="26sp" android:textColor="#ffffff" android:background="#4D9EB3" android:text="TextView in CardView" /> </android.support.v7.widget.CardView>
需要注意的是CardView继承自FrameLayout,所以CardView里面包裹的控件,例如TextView,不可以在CardView中设置android:gravity="center",这样是没有作用的,应该在TextView中设置anrdoid:layout_gravity="center",这样才有用。可以参考RelativeLayout。总的来说,FrameLayout跟RelativeLayout一样,对齐,margin等设置跟LinearLayout不一样,这点需要特别注意!