1

Now i have next rectangle:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="28dp" />

    <gradient
        android:endColor="#FFFFFF"
        android:gradientRadius="20dp"
        android:startColor="#FFFFFF"
        android:type="linear" />

    <size
        android:width="106dp"
        android:height="106dp" />

    <stroke
        android:width="1dp"
        android:color="#0189ff" />
</shape>

And have next result:

enter image description here

Q: How can I add a shadow/elevation instead of stroke?

Morozov
  • 4,968
  • 6
  • 39
  • 70

1 Answers1

5

you can not directly apply shadow in place of stroke.

For that, you need to customized your XML using <layer-list></layer-list>

Like

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

    <!-- Drop Shadow Stack -->
    <item>
        <shape>

            <padding
                android:bottom="@dimen/_3sdp"
                android:left="@dimen/_1sdp"
                android:right="@dimen/_3sdp"
                android:top="@dimen/_1sdp" />
            <solid android:color="#00dff2e4" />

            <corners android:radius="@dimen/_5sdp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="@dimen/_3sdp"
                android:left="@dimen/_1sdp"
                android:right="@dimen/_3sdp"
                android:top="@dimen/_1sdp" />

            <solid android:color="#10dff2e4" />

            <corners android:radius="@dimen/_50sdp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="@dimen/_3sdp"
                android:left="@dimen/_1sdp"
                android:right="@dimen/_3sdp"
                android:top="@dimen/_1sdp" />

            <solid android:color="#20dff2e4" />

            <corners android:radius="@dimen/_50sdp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="@dimen/_3sdp"
                android:left="@dimen/_1sdp"
                android:right="@dimen/_3sdp"
                android:top="@dimen/_1sdp" />

            <solid android:color="#30dff2e4" />

            <corners android:radius="@dimen/_50sdp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="@dimen/_3sdp"
                android:left="@dimen/_1sdp"
                android:right="@dimen/_3sdp"
                android:top="@dimen/_1sdp" />

            <solid android:color="#50dff2e4" />

            <corners android:radius="@dimen/_50sdp" />
        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <solid android:color="@android:color/white" />

            <corners android:radius="@dimen/_50sdp" />
        </shape>
    </item>

</layer-list>

output

Mehul Kabaria
  • 6,404
  • 4
  • 25
  • 50
  • yep, find this solution here: https://medium.com/@ArmanSo/take-control-of-views-shadow-android-c6b35ba573e9, right now, but thx. – Morozov Apr 07 '20 at 10:22