android card设置背景,Android CardView:你需要知道的一些事

CardView是一个视图容器,继承自FrameLayout,CardView像一张卡片,有阴影和圆角,这些属性也可以添加到其他视图组中。

CardView提供的可定制性包括CornerRadius,Elevation,MaxElevation,ContentPadding,CompatPadding,PreventCornerOverlap和专用CardBackgroundColor,可以使用下面的代码片段看一下效果:

android:layout_width="match_parent"

android:layout_height="250dp"

app:cardBackgroundColor="@android:color/white"

app:cardCornerRadius="0dp"

app:cardMaxElevation="1dp"

app:cardElevation="0.7dp"

app:contentPadding="10dp"

app:contentPaddingBottom="0dp"

app:cardPreventCornerOverlap="true"

app:cardUseCompatPadding="true"

android:id="@+id/cardView">

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="180dp"

android:scaleType="centerCrop"

android:id="@+id/img"

android:src="@drawable/joshua_sortino"

android:contentDescription="CardImageViewDesc" />

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@id/img"

android:layout_marginLeft="5dp"

android:layout_marginStart="5dp"

android:fontFamily="sans-serif"

android:gravity="center_vertical"

android:text="Joshua Sortino - Via Unsplash"

android:textSize="18sp" />

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_alignParentEnd="true"

android:layout_alignParentRight="true"

android:background="?attr/selectableItemBackgroundBorderless"

android:src="@drawable/ic_favorite_border"

android:layout_below="@id/img"

android:layout_marginRight="5dp"

android:layout_marginEnd="5dp"

android:contentDescription="FavButtonDesc" />

添加CardView到项目中

添加如下的依赖项到build.gradle文件中

compile 'com.android.support:cardview-v7:26.0.0'

如果使用的是AndroidStudio 3.0以及以上,需要添加下面这个依赖项

implementation 'com.android.support:cardview-v7:26.0.0'

CardView 设置背景颜色

app:cardBackgroundColor="@android:color/white"

cardView.setCardBackgroundColor(Color.WHITE);

卡片圆角半径

app:cardCornerRadius="0dp"

cardView.setRadius(0);

Card Elevation

卡片高度只是将卡片在z轴上的视图提升到与所处传值相同的高度,以前版本中是通过阴影来实现该效果,为内容的边添加padding

maxCardElevation + (1 - cos45) * cornerRadius

上下使用:

maxCardElevation * 1.5 + (1 - cos45) * cornerRadius

然后将阴影应用于该空间,如果没有手动设置的话,MaxCardElevation属性将等于CardElevation。

app:cardElevation="0.7dp"

app:cardMaxElevation="1dp"

cardView.setCardElevation(2.1f);

cardView.setMaxCardElevation(3f);

卡片内容padding

如前所述,正常的CardView的padding用来创建绘制阴影的空间,因此我们使用content padding在边和子视图之间增加填充。

app:contentPadding="10dp"

app:contentPaddingBottom="0dp"

cardView.setContentPadding(30, 30, 30, 0);

卡片使用兼容填充

一个与填充有关的属性,由于CardViews在Lollipop之前使用填充来绘制阴影,因此内容区域在Lollipop之前和之后的平台上会发生变化,为了确保所有平台上的内容区域保护不变,使用了兼容的Padding,他只是在Lollipop和之后的版本添加内部填充。

app:cardUseCompatPadding="true"

cardView.setUseCompatPadding(true);

CardPreventCornerOverlap 避免角重叠

app:cardPreventCornerOverlap="true"

cardView.setPreventCornerOverlap(true);

用Java代码代替上面的xml的代码:

CardView cardView = (CardView) findViewById(R.id.cardView);

cardView.setUseCompatPadding(true);

cardView.setContentPadding(30, 30, 30, 0);

cardView.setPreventCornerOverlap(true);

cardView.setCardBackgroundColor(Color.WHITE);

cardView.setCardElevation(2.1f);

cardView.setRadius(0);

cardView.setMaxCardElevation(3f);

cardView.setCardElevation(dpToPx(0.7f));

和下面的效果一样

cardView.setCardElevation(2.1f);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CardView是在Android 5.0 (API level 21)中引入的一个UI组件,它是一个可以显示阴影和圆角矩形背景的容器视图。在CardView中,可以使用android:outlineProvider属性来定义CardView的轮廓提供者,从而控制CardView的圆角和阴影效果。 默认情况下,CardView使用矩形轮廓提供者,因此它的边缘是直角的。可以通过设置android:radius属性来指定CardView的圆角半径,使CardView显示为圆角矩形。例如,以下代码将CardView的圆角半径设置为16dp: ``` <androidx.cardview.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:radius="16dp" android:elevation="8dp"> <!-- CardView的内容 --> </androidx.cardview.widget.CardView> ``` 如果需要自定义CardView的轮廓提供者,可以使用android:outlineProvider属性。例如,以下代码将CardView的轮廓提供者设置为一个自定义的圆角轮廓提供者: ``` <androidx.cardview.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:elevation="8dp" android:outlineProvider="@drawable/custom_outline_provider" android:clipToOutline="true"> <!-- CardView的内容 --> </androidx.cardview.widget.CardView> ``` 在这个例子中,我们使用了android:outlineProvider属性将CardView的轮廓提供者设置为一个自定义的Drawable对象。需要注意的是,使用自定义的轮廓提供者时,还需要android:clipToOutline属性设置为true,以确保CardView的内容不会绘制在轮廓之外。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值