El elemento componible Card actúa como un contenedor de Material Design para tu IU.
Por lo general, las tarjetas presentan un solo fragmento de contenido coherente. En los siguientes
ejemplos, se muestra dónde puedes usar una tarjeta:
- Un producto en una app de compras
- Una noticia en una app de noticias
- Un mensaje en una app de comunicaciones
El enfoque en representar un solo fragmento de contenido es lo que distingue a Card de otros contenedores. Por ejemplo, Scaffold proporciona una estructura general
a una pantalla completa. Por lo general, Card es un elemento de la IU más pequeño dentro de un diseño más grande, mientras que un componente de diseño, como Column o Row, proporciona una API más simple y genérica.
Implementación básica
Card se comporta de manera muy similar a otros contenedores de Compose. Para declarar su contenido, llama a otras funciones de componibilidad dentro de ella. Por ejemplo, observa cómo Card contiene una
llamada a Text en el siguiente ejemplo mínimo:
@Composable
fun CardMinimalExample() {
Card() {
Text(text = "Hello, world!")
}
}
Implementaciones avanzadas
Consulta la referencia para obtener la definición de la API de Card. Define varios parámetros que te permiten personalizar la apariencia y el comportamiento del componente.
Estos son algunos parámetros clave que debes tener en cuenta:
elevation: Agrega una sombra al componente que hace que parezca elevado por encima del fondo.colors: Usa el tipoCardColorspara establecer el color predeterminado del contenedor y de los elementos secundarios.enabled: Si pasasfalsepara este parámetro, la tarjeta aparece inhabilitada y no responde a la entrada del usuario.onClick: Por lo general, unCardno acepta eventos de clic. Por lo tanto, la sobrecarga principal que debes tener en cuenta es la que define un parámetroonClick. Debes usar esta sobrecarga si quieres que tu implementación deCardresponda a las presiones del usuario.
En el siguiente ejemplo, se muestra cómo puedes usar estos parámetros, así como
otros parámetros comunes, como shape y modifier.
Tarjeta con relleno
A continuación, se muestra un ejemplo de cómo puedes implementar una tarjeta rellena.
La clave aquí es el uso de la propiedad colors para cambiar el color de relleno.
@Composable fun FilledCardExample() { Card( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surfaceVariant, ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Filled", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
Esta implementación se ve de la siguiente manera:
Tarjeta elevada
En el siguiente fragmento, se muestra cómo implementar una tarjeta elevada. Usa el elemento componible ElevatedCard dedicado.
Puedes usar la propiedad elevation para controlar la apariencia de la elevación y la sombra resultante.
@Composable fun ElevatedCardExample() { ElevatedCard( elevation = CardDefaults.cardElevation( defaultElevation = 6.dp ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Elevated", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
Esta implementación se ve de la siguiente manera:
Tarjeta con contorno
A continuación, se muestra un ejemplo de una tarjeta con contorno. Usa el elemento componible OutlinedCard dedicado.
@Composable fun OutlinedCardExample() { OutlinedCard( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surface, ), border = BorderStroke(1.dp, Color.Black), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Outlined", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
Esta implementación se ve de la siguiente manera:
Limitaciones
Las tarjetas no incluyen acciones de desplazamiento o descarte inherentes, pero se pueden integrar en elementos componibles que ofrezcan estas funciones. Por ejemplo, para implementar el gesto de deslizar para descartar en una tarjeta, intégralo con el elemento de componibilidad SwipeToDismiss. Para integrarlo con el desplazamiento, usa modificadores de desplazamiento, como verticalScroll. Consulta la documentación de Scroll para obtener más información.