是否可以更改CardView周围阴影的颜色?主要用于标记所选卡,因为它已点亮?
应该在L和L前设备上有效。
答案 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_color
和cardview_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 /”