Elevation not working for ImageView Elevation not working for ImageView android android

Elevation not working for ImageView


The elevation shadow is derived from the background drawable of a View. If your ImageView has no background, you'll see no shadow.

If you want to change that behavior, you need to build your own ViewOutlineProvider and call View.setOutlineProvider() to set it (and this is not trivial).


For displaying a round Image with SHADOW with elevation attribute, I created a round drawable WITHOUT SHADOW as shown below :

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item>        <shape android:shape="oval">            <solid android:color="@android:color/white" />        </shape>    </item></layer-list>

Use this drawable as background in your ImageView as shown below :

    <ImageView        android:id="@+id/my_button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/round_shape"        android:elevation="5dp"        android:src="@drawable/center" />

This will display ImageView with shadow.

One question that might be arising in your mind is why to use xml drawable. As mentioned by other developers on various answers to this question, shadow is formed from background and a bordered background to be more specific.Xml drawable helps us in creating a bordered background from which elevation attribute can create shadow.


Works in all latest versions

Use CardView as parent layout. Use android:background="@drawable/your_img" instead of android:src="@drawable/your_img" in ImageView.

<android.support.v7.widget.CardView    android:layout_gravity="center_horizontal"            app:cardElevation="5dp"    android:layout_width="wrap_content"    android:layout_height="wrap_content">    <ImageView               android:id="@+id/image"        android:background="@drawable/your_img"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:contentDescription="@null" /></android.support.v7.widget.CardView>