Ho un ListView e con ogni elemento dell'elenco voglio che mostri un'ombra sotto di esso. Sto usando la nuova funzione di elevazione di Android Lollipop per impostare una Z sulla vista che voglio proiettare un'ombra e lo sto già facendo efficacemente con ActionBar (tecnicamente una barra degli strumenti in Lollipop). Sto usando l'elevazione di Lollipop, ma per qualche motivo non mostra un'ombra sotto gli elementi dell'elenco. Ecco come è impostato il layout di ciascun elemento dell'elenco:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:elevation="30dp"
>
<ImageView
android:id="@+id/documentImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/alphared"
android:layout_alignParentBottom="true" >
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="light"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp"
android:singleLine="true"
android:text="New Document"
android:textSize="27sp"/>
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentPageCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="italic"
android:paddingLeft="16dp"
android:layout_marginBottom="16dp"
android:text="1 page"
android:textSize="20sp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Tuttavia, ecco come mostra l'elemento dell'elenco, senza ombre:
Ho anche provato quanto segue inutilmente:
- Impostare l'elevazione su ImageView e TextViews stessi anziché sul layout principale.
- Applicato uno sfondo a ImageView.
- Usato TranslationZ al posto di Elevation.