¿Cómo puedo configurar una sombra en cada celda de un ListView?

Tengo una celda personalizada para un Android ListView. Esta celda personalizada es un diseño relativo con algunas vistas dentro. Hay un espacio entre cada celda, así que quiero añadir a la parte inferior de las celdas una sombra.

He estado buscando en Google, pero no se pudo encontrar nada? Quiero lograr algo similar a esto:

Introduzca aquí la descripción de la imagen

¡Gracias!

Se puede hacer de dos maneras:

  1. 9 imágenes de parche – haga clic en enlace para entender 9 parche
  2. Utilizar layer-list – Crear un nuevo archivo en "res / drawable" que contiene:

    <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item > <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> <corners android:radius="5dp"/> </shape> </item> <item android:right="1dp" android:left="1dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> <corners android:radius="5dp"/> </shape> </item> </layer-list> 

A continuación, agregue este archivo de lista de capas como fondo en su Disposición de elemento de lista (es decir, Linearlayout o etc.).

La forma más fácil es, sin duda, para construir la sombra en un 9-parche. Un ejemplo de algo como esto es:

Recuadro 9-Patch

Esto es mucho más grande de lo que necesita ser, como un parche de 9, pero quería hacerlo más grande por ejemplo.

Aplicar esta lista de capas como fondo en su elemento de lista Disposición, El color seleccionado está desactivado ….

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item > <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> <corners android:radius="5dp"/> </shape> </item> <item android:right="1dp" android:left="1dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> <corners android:radius="5dp"/> </shape> </item> </layer-list> 

Todavía no he probado su escenario exacto, pero de esta manera agregaría un divisor transparente a una vista de lista:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/android:list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@android:color/transparent" android:dividerHeight="4dip"/> </LinearLayout> 

Esto es lo que necesitaría si desea agregar la línea de sombra mediante programación.

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <stroke android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:width="match_content" android:color="@color/black" /> <size android:height="1dp" /> </shape> 

El color del trazo puede no aparecer como negro ya que se representa en la parte superior de una capa alfa. Además, en la actualidad dibuja los cuatro lados de un rectángulo, no sólo la parte inferior. (Voy a tener que hacer algunas investigaciones adicionales sobre esos dos temas).

Vea este tutorial si necesita ayuda para averiguar cómo conectarlo todo juntos.

Cree un rectángulo de lista de capas que sobresalga desde debajo y defina el color de fondo principal de su vista de célula en su xml.

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!--shadow to bottom and right--> <!--by pushing offset from top and left--> <!--then set foreground-color in android:background in xml--> <item android:left="2dp" android:right="0dp" android:top="2dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> </shape> </item> </layer-list> in your cell.xml: <RelativeLayout android:layout_width="match_content" android:layout_height="wrap_content" android:background="@drawable/shadow"> <RelativeLayout android:id="@+id/cell_stuff" android:layout_width="match_content" android:layout_height="match_content" android:background="@android:color/holo_orange_light"> <!--cell stuff--> </RelativeLayout> </RelativeLayout> 

O todo en uno

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!--shadow to bottom and right--> <!--by pushing offset from top and left--> <item android:left="2dp" android:right="0dp" android:top="2dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/darker_gray" /> </shape> </item> <!--foreground-color to cover over non-shadow--> <!--need to also offset in opposite direction--> <item android:left="0dp" android:right="2dp" android:top="0dp" android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="@android:color/holo_orange_light"/> </shape> </item> </layer-list> in your cell.xml: <RelativeLayout android:layout_width="match_content" android:layout_height="wrap_content" android:background="@drawable/shadow_allinone"> <!--cell stuff--> </RelativeLayout> 

Introduzca aquí la descripción de la imagen

  • Los colores de Android no funcionan en mi dispositivo físico
  • Android gradle src / androidTest / res / diseño / mylayout.xml no se encuentra en mypackage.R
  • ¿Por qué no se muestra mi aplicación en Google Play? Ahora publicado
  • Cómo hacer navegación personalizada ver animaciones como ésta
  • Prioridad de truncamiento de Android TextView o Resistencia de compresión
  • Androide. OnEditorAction nunca llamado
  • El componente personalizado de Android funciona bien en tiempo de ejecución, pero no funciona en tiempo de diseño
  • Android java onClick No se pudo ejecutar el método de la actividad
  • Android: Valor de cadena con nueva línea en XML
  • ¿Cómo puedo aplicar operaciones matemáticas a las dimensiones de Android?
  • No se puede crear un ToggleButton en Eclipse IDE para android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.