我不能使用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
,但它从左到右传播,这不是我想要的。有没有办法隔离每侧的两个独特的渐变?
这就是我想要做的:
您可以尝试使用矩形中包含的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>
或者,你可以使用CardView的v7 CardView support library,它支持Android api 7+。
你需要为它创建自己的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