Android更改材质高程阴影颜色
Posted
技术标签:
【中文标题】Android更改材质高程阴影颜色【英文标题】:Android change Material elevation shadow color 【发布时间】:2015-05-25 02:08:24 【问题描述】:是否可以更改 xml 高程属性产生的阴影颜色? 我希望通过代码动态更改阴影。
【问题讨论】:
不行,框架提供的阴影颜色不能改变。 因为我对 CardView 上的阴影颜色感兴趣,所以我找到了一些东西,但不明白如何使用它:https://github.com/gabrielemariotti/cardslib/blob/master/doc/SHADOW.md
我也发现了这个:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.1_r1/frameworks/support/v7/cardview/res/values/colors.xml
还有这个:https://developer.android.com/training/material/shadows-clipping.html
According to this post 好像不能改变阴影的颜色
【参考方案1】:
我知道这个问题已经很老了,可能作者不再需要答案了。我就把它留在这里,以便其他人可以找到它。
Lollipop 的高程系统不支持彩色阴影。
但是,如果您需要彩色阴影,可以使用 Carbon 来获得它们。它是一种对 Material Design 的支持库,在最新版本中,有一个更改阴影颜色的选项。 Behance 上有很多不错的设计,带有彩色阴影,我认为拥有它们会很好,尽管 Android 中没有这样的功能。请务必注意,在 所有 Android 版本(包括 5.0+)上也会模拟彩色阴影。
https://github.com/ZieIony/Carbon
以下图片和代码可以在 Carbon 的示例中找到。
代码:
<carbon.widget.LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<carbon.widget.Button
android:layout_
android:layout_
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>
“卡片视图”:
<carbon.widget.LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<carbon.widget.LinearLayout
android:layout_
android:layout_
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_
android:layout_
android:layout_weight="1"
android:src="@drawable/test_image"/>
<carbon.widget.TextView
android:layout_
android:layout_
android:text="test text"/>
</carbon.widget.LinearLayout>
</carbon.widget.LinearLayout>
【讨论】:
您能否详细说明您是如何使用 Carbon 来创建彩色阴影的?我目前无法使其工作。提前致谢。 我添加了一个sn-p。您可以在存储库中找到完整的示例。它位于示例应用程序的“功能/阴影”下。如果您遇到任何问题,请随时打开一个问题并在那里讨论。 非常感谢。然而问题是我想在 CardView 或类似的东西上使用它,我可以在里面有子视图。所以按钮在我的情况下不起作用。 @Zielony 你的仓库很难集成到我的项目中:( @Tony 呃,对不起。您是否尝试复制所需的代码片段?或者您更愿意从 AppCompat 迁移到 Carbon?您可以随时向我的 GitHub 项目添加问题以寻求帮助。【参考方案2】:View 类中提供了起始 API 28(Pie)View#setOutlineAmbientShadowColor(int color) 和 View#setOutlineSpotShadowColor(int color)。
如果你在你的视图上使用高程,你可以使用这两种方法来改变阴影的颜色。
【讨论】:
此外,这些也可以在你的主题 xml 中设置为您可以使用Shadow Layout。检查我的answer。
【讨论】:
以上是关于Android更改材质高程阴影颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何从一侧移除高程阴影而不从卡片或材质小部件中移除高程本身?