安卓更改材质高程阴影颜色

2022-09-01 01:48:22

是否可以更改由 xml 高程属性生成的阴影颜色?我希望通过代码动态更改阴影。


答案 1

我知道这个问题已经很老了,可能作者不再需要答案了。我会把它留在这里,这样其他人就可以找到它。

棒棒糖的提升系统不支持彩色阴影。

但是,如果您需要彩色阴影,则可以使用Carbon获得它们。它是材质设计的一种支持库,在最新版本中,有一个选项可以更改阴影颜色。Behance上有很多漂亮的设计,具有彩色阴影,我认为尽管Android中缺乏这样的功能,但拥有它们会很好。重要的是要注意,彩色阴影在所有Android版本上都得到了模拟,在5.0 +上也是如此。

https://github.com/ZieIony/Carbon

下面的图像和代码可以在Carbon的示例中找到。

enter image description here

法典:

<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>

答案 2

起始 API 28 (Pie) View#setOutlineAmbientShadowColor(int color)View#setOutlineSpotShadowColor(int color) 在 View 类中可用。

如果在视图上使用立面,则可以使用这两种方法来更改阴影的颜色。


推荐