卡片视图背景颜色会影响阴影颜色

3

我的 Card View 如下所示:

android:layout_marginTop="2dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
card_view:cardCornerRadius="2dp"
card_view:cardElevation="6dp"
card_view:cardUseCompatPadding="true"
card_view:contentPadding="10p"

没有背景色时,我的卡片视图看起来非常完美,如下图所示:

enter image description here

然而,当我添加了简单的属性:
card_view:cardBackgroundColor="#xxxxxxxx"

阴影在颜色、透明度、模糊程度等方面都有明显的变化。

enter image description here

我该如何解决这个问题?我尝试使用RelativeLayout作为背景,并在那里更改颜色,以便不影响阴影...但是那会影响圆角。

您有什么想法吗?感谢您的帮助!

4个回答

1

我遇到了完全相同的问题,通过删除十六进制代码中的alpha部分解决了它。

例如:#AA333333 删除AA。当然,使用所需的十六进制颜色而不带alpha。


这正是导致问题的原因。消除颜色的 alpha 部分解决了我的问题。 - Taras Lozovyi
有没有办法解决部分半透明(带有一些Alpha)的颜色问题? - yeshu

0

你对RelativeLayout的想法很好。不要将卡片视图放在RelativeLayout中,而是将RelativeLayout作为CardView子项添加,然后将其内容添加到RelativeLayout中,在您的情况下,看起来您只有一个子项:TextView

因此,请更改您的TextView背景颜色或将其放置在RelativeLayout中并更改RelativeLayout背景颜色。


这正是我尝试过的,除了RelativeLayout会适应CardView内部但不会在其中扩展。因此,我无法获得我想要的圆角效果。 - Greg Peckory
2
@GregPeckory 您可以使用可绘制的形状来获得圆角。无论如何,您应该尝试更多地向这个方向,它应该可以工作。 - Ilya Gazman

0
作为一种解决方法,由于 alpha 是问题所在,您可以尝试提高卡片颜色的亮度(或将其与底层颜色混合)。
ColorUtils.blendARGB(yourCardColor, Color.WHITE, 0.2f)

-3

不要那样做,而是设置android:background="#十六进制颜色"


我需要为此创建一个“drawable”。我只需在那里设置颜色吗? - Greg Peckory
抱歉,请使用card.setBackgroundColor(Color.rgb(255, 0, 0));。在rgb()内指定RBG值。setBackgroundColor需要int值。 - Nick Isaacs
我尝试过这个,结果是一个没有阴影或圆角的大长方形。 - Greg Peckory
你好,你尝试过这个吗:https://dev59.com/vV8d5IYBdhLWcg3wsDtW - Nick Isaacs
是的,这最初是导致问题的原因。 - Greg Peckory
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接