是否可以更改xml提升属性产生的阴影颜色? 我想通过代码动态改变阴影。
答案 0 :(得分:43)
我知道这个问题非常陈旧,可能作者不再需要答案了。我会把它留在这里,以便其他人可以找到它。
Lollipop的提升系统不支持彩色阴影。
但是,如果你需要彩色阴影,可以使用Carbon来获得它们。它是Material Design的一种支持库,在最新版本中有一个改变阴影颜色的选项。 Behance上有很多漂亮的设计,有彩色阴影,我认为尽管在Android中缺少这样的功能,但还是很好。重要的是要注意,彩色阴影在所有 Android版本上模拟,也是5.0+。
https://github.com/ZieIony/Carbon
以下图像和代码可以在Carbon的样本中找到。
代码:
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<carbon.widget.Button
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_margin="@dimen/carbon_padding"
android:background="#ffffff"
app:carbon_cornerRadius="2dp"
app:carbon_elevation="8dp"
app:carbon_elevationShadowColor="@color/carbon_red_700"/>
</carbon.widget.LinearLayout>
“CardView”:
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<carbon.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_margin="@dimen/carbon_margin"
android:background="#ffffff"
app:carbon_cornerRadius="2dp"
app:carbon_elevation="8dp"
app:carbon_elevationShadowColor="@color/carbon_red_700">
<carbon.widget.ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@drawable/test_image"/>
<carbon.widget.TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test text"/>
</carbon.widget.LinearLayout>
</carbon.widget.LinearLayout>
答案 1 :(得分:3)
View类中提供了API 28 {Pie)View#setOutlineAmbientShadowColor(int color)和View#setOutlineSpotShadowColor(int color)。
如果在视图上使用高程,则可以同时使用两种方法更改阴影的颜色。
答案 2 :(得分:0)
您可以使用Shadow Layout。检查我的answer。