Android如何在视图的左右两侧创建渐变阴影?

问题描述 投票:0回答:2

我不能使用Lollipop elevation属性,因为我需要从API 18定位设备。

我需要在视图的右侧和左侧放置阴影。

这是我到目前为止所尝试的:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <item>
        <shape >
            <!-- set the shadow color here -->
            <stroke
                android:width="2dp"
                android:color="#7000" />

            <!-- setting the thickness of shadow (positive value will give shadow on that side) -->

            <padding
                android:bottom="0dp"
                android:left="2dp"
                android:right="2dp"
                android:top="0dp" />

            <corners android:radius="3dp" />
        </shape>
    </item>

    <!-- Background -->

    <item>
        <shape>
            <solid android:color="@color/salmon" />
            <corners android:radius="3dp" />
        </shape>
    </item>
</layer-list>

我尝试在第一项中添加gradients,但它从左到右传播,这不是我想要的。有没有办法隔离每侧的两个独特的渐变?

这就是我想要做的:

enter image description here

android xml user-interface gradient shadow
2个回答
0
投票

您可以尝试使用矩形中包含的gradient,您可以调整大小:下面的示例是我用于导航抽屉的阴影。您可以修改它以满足您的需求。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#111"
        android:endColor="#00000000">
    </gradient>
    <size
        android:height="@dimen/activity_vertical_margin"
        android:width="5dp">
    </size>
</shape>

或者,你可以使用CardViewv7 CardView support library,它支持Android api 7+。


0
投票

你需要为它创建自己的drawable。

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle">
        <gradient
            android:angle="270"
            android:endColor="@android:color/white"
            android:startColor="@color/black_38">
        </gradient>
        <size

            android:height="4dp">
        </size>
    </shape>

然后例如借助相对布局来对齐布局的任何一侧。对我来说,它是自定义应用栏的底部阴影。

...
    <View
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:background="@drawable/app_bar_shadow"
            android:layout_height="4dp"/> // height of your shadow
© www.soinside.com 2019 - 2024. All rights reserved.