首页 > 解决方案 > 更改 CardView 阴影颜色

问题描述

这个问题被问了很多次,但我仍然没有找到解决这个问题的好方法。

为什么我需要这样做?好吧,因为我和我的团队开发的项目具有 iOS 风格。

我尝试了什么?

  1. 9.pathch 阴影生成器,但 9.pathes 本质上是 png,它没有给我任何灵活性,如果我要使用这种方法,我应该在任何地方编辑边距。
  2. Carbon 库它支持自定义阴影并且它们被绘制在视图边界之外,但是当库不为圆角绘制阴影时,存在关于圆角矩形的问题。
  3. 使用旧的 CardView 实现并覆盖它的阴影颜色,但它被绘制在卡片边界内,所以它不是选项。

那么有没有办法改变 CardView 的阴影颜色,对所有布局文件进行最少的编辑,并像原始 CardView 一样在视图之外绘制阴影?

标签: androidandroid-viewandroid-cardviewshadowandroid-elevation

解决方案


考虑一下twitter 中的这个线程,Nick Butcher 讨论了如何实现该功能:

在此处输入图像描述

有关详细信息,请参阅outlineAmbientShadowColor、和属性。不幸的是,从 API 28 开始,这是可能的。outlineSpotShadowColorspotShadowAlphaambientShadowAlpha

对于较低的 API,Nick 分享了一个要点。结果如下:

在 API 21 上运行

该技术不直接连接到CardView,它可以应用于任何View.


推荐阅读