¿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:
- Edición de Android Dibujo de rutas largas en MapView mediante análisis XML
- Intentando crear una solicitud SOAP correcta
- ¿Es posible crear un VectorDrawable desde el sistema de archivos (archivo * .xml)
- Barra de herramientas y Fragmento
- Doctype Android lint.xml con declaración dtd
¡Gracias!
- ¿Importar Java Project en la aplicación Android?
- ¿Por qué el margen no funciona?
- Agregar imagen al elemento de menú
- La configuración de un indicador personalizado para ExpandableListView no funciona
- La barra de botones no se pega a la parte inferior de la pantalla
- Cómo combinar conjuntos de imágenes, cadenas y enteros, en un formato fácil de mantener
- ¿Puede un ToggleButton cambiar la funcionalidad de otros botones en la misma Actividad?
- ListFragment aparece dos veces en el teléfono
Se puede hacer de dos maneras:
- 9 imágenes de parche – haga clic en enlace para entender 9 parche
-
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:
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>
- Compartir imágenes de Android de la carpeta de activos
- Eliminar el espacio de borde alrededor de GridView