Android CardView具有自定义阴影颜色

时间:2015-07-08 14:55:09

标签: android shadow android-cardview

是否可以更改CardView周围阴影的颜色?主要用于标记所选卡,因为它已点亮

应该在L和L前设备上有效。

4 个答案:

答案 0 :(得分:9)

CardView阴影颜色在CardView库的资源中定义。您可以通过重新定义自己项目中的资源值来覆盖它们,但不能通过代码动态更改它们。

编辑:覆盖资源值只会影响Lollipop之前的设备。在Lollipop及以上版本中,CardView始终使用其颜色无法更改的本机阴影实现。

答案 1 :(得分:2)

更新:检查my modification

这是一个解决方法:

复制CardView的{​​{3}}。然后创建自己的Android库模块并使用此模块而不是支持库。在这些之后,评论或删除CardView中的代码,如下所示

static {
//        if (Build.VERSION.SDK_INT >= 21) {
//            IMPL = new CardViewApi21Impl();
//        } else
            if (Build.VERSION.SDK_INT >= 17) {
            IMPL = new CardViewApi17Impl();
        } else {
            IMPL = new CardViewBaseImpl();
        }
        IMPL.initStatic();
    }

也就是说,即使api为21或更高,你也会使用compat-version CardViewApi17Impl。然后,您可以定义自己的cardview_shadow_start_colorcardview_shadow_end_color来覆盖课程RoundRectDrawableWithShadow中的内容。此外,您可以使其更具可定制性。

希望可以帮助别人。

答案 2 :(得分:1)

我使用了一个小技巧。一个CardView放置在另一个CardView的后面。两者相同,区别是背景card_view:cardElevation="10dp"和面孔card_view:cardElevation="2dp"。减去高程将提供阴影多长时间,第二个CardView的颜色将成为第一个阴影的颜色。

示例:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/view_click_basement"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    card_view:cardCornerRadius="5dp"
    card_view:cardBackgroundColor="@color/colorNewGreen"
    card_view:cardElevation="10dp"
    card_view:cardUseCompatPadding="true">

    <android.support.v7.widget.CardView
        android:id="@+id/view_click"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="2dp"
        card_view:cardCornerRadius="5dp"
        card_view:cardElevation="2dp"
        card_view:cardUseCompatPadding="true">

答案 3 :(得分:-3)

尝试一下:-

android:outlineSpotShadowColor =“ @ color /” android:outlineAmbientShadowColor =“ @ color /”