how to set shadow to a View in android?

The best way to create a shadow is to use a 9patch image as the
background of the view (or a ViewGroup that wraps the view).

The first step is to create a png image with a shadow around it. I
used photoshop to create such an image. Its really simple.

  • Create a new image with Photoshop.
  • Add a layer and create a black square of 4×4.
  • Create a shadow on the layer by selecting the layer in layer
    explorer and clicking on a button titled fx and choosing drop shadow.
  • Export the image as png.

The next step is to create 9-patch drawables from this image.

  • Open draw9patch from android-sdk/tools
  • Open the image in draw9patch
  • Create 4 black lines on the four sides of the square like the
    following and then save the image as shadow.9.png.

Now you can add this shadow as the background of the views you want to
add the shadow to. Add shadow.9.png to res/drawables. Now add it
as a background:

<LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/shadow"
  android:paddingBottom="5px"
  android:paddingLeft="6px"
  android:paddingRight="5px"
  android:paddingTop="5px"
>

I recently wrote a blog post that explains this in detail and
includes the 9patch image that I use for creating the shadow.

Leave a Comment