Remove elevation shadow without removing elevation itself

Is there a way for AppBarLayout to no drop shadow and keep its elevation?

<android.support.design.widget.AppBarLayout
        app:elevation="0dp">

Solution 1:

To complete M.Sandholtz answer, you can also define this in XML, with outlineProvider="none".

<View
    android:id="@+id/viewElevationNoShadow"
    android:outlineProvider="none"
    android:elevation="4dp"/>

Solution 2:

I just ran into this same problem and this is what fixed it for me:

val withElevationNoShadow = view.findViewById<*your view type*>(*your view id*)
withElevationNoShadow.outlineProvider = null

Keep in mind that the code above is Kotlin, but the Java is almost identical.

This works because shadows are drawn by ViewOutlineProviders. By setting your view's ViewOutlineProvider to null, you take away the default shadow.

For more info about ViewOutlineProviders check out

https://developer.android.com/reference/android/view/ViewOutlineProvider

and

https://developer.android.com/training/material/shadows-clipping