Android Material Design 中的 CardView 详解

简介

在Android Material Design中,CardView是一个可以让应用程序的界面拥有更好的层次感的控件。它能够创建一个卡片式的界面,使其中的元素看起来更加连贯和统一。CardView拥有多种自定义属性,可以用来设置阴影、背景、圆角半径等等。

如何使用

首先,需要在build.gradle中引入依赖:

dependencies {
    implementation 'com.android.support:cardview-v7:28.0.0'
}

在布局文件中,可以像这样使用CardView:

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="4dp"
    app:cardElevation="4dp">

    <!-- CardView中的内容 -->

</androidx.cardview.widget.CardView>

其中,cardCornerRadius属性用来设置圆角半径,cardElevation属性用来设置阴影高度。

在CardView中可以添加任何内容,如TextView、ImageView等等,也可以嵌套在其他布局中。需要注意的是,CardView本身并不会对内容进行任何样式设置,因此需要对内容进行样式设置。

自定义属性

CardView拥有多种自定义属性:

属性名 属性说明
cardBackgroundColor 卡片的背景颜色
cardCornerRadius 卡片的圆角半径
cardElevation 卡片的阴影高度
cardMaxElevation 卡片的最大阴影高度
cardUseCompatPadding 是否使用CompatPadding兼容性包添加填充
cardPreventCornerOverlap 是否避免圆角重叠
contentPadding 卡片内容的内边距
contentPaddingLeft 卡片内容的左内边距
contentPaddingTop 卡片内容的上内边距
contentPaddingRight 卡片内容的右内边距
contentPaddingBottom 卡片内容的下内边距
android:padding 卡片的全局内边距,优先级低于contentPadding
app:cardUseCompatPadding 是否使用兼容性包的填充
app:cardPreventCornerOverlap 是否避免圆角重叠
app:cardCornerRadius 卡片的圆角半径,优先级高于android:radius
app:cardElevation 卡片的阴影高度
app:cardMaxElevation 卡片的最大阴影高度

示例代码

下面是一个使用CardView的示例代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.cardview.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="10dp"
        app:cardCornerRadius="4dp"
        app:cardElevation="4dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:padding="16dp"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/image_view"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:src="@drawable/ic_launcher"/>

            <TextView
                android:id="@+id/text_view"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="16dp"
                android:text="CardView示例文本"
                android:textSize="16sp"/>

        </LinearLayout>

    </androidx.cardview.widget.CardView>

</RelativeLayout>

效果如下:

总结

CardView是Android Material Design中的一个重要控件,能够为应用程序的UI提供更加具有层次感的卡片式界面。通过设置不同的属性,可以为CardView添加背景、圆角半径、阴影等样式。在使用时需要注意样式的细节和内容的自定义。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a4fccaadd4f0e0ffd5d7ec


纠错反馈