Categories: Android

Android CardView


CardView es un FrameLayout con un borde redondeado y una sombra.Para provocar la sombra usa la la propiedad elevation en Lollipop.

Debido a que generar bordes redondeados es muy costoso en versiones anteriores puesto que tenía que recortar todos los elementos hijos, CardView aplica un padding extra para que no se produzca tal intersección (Para más detalles setPreventCornerOverlap(boolean)).

Antes de Lollipop, CardView añade padding a su contenido y dibuja sombras en esa área. La cantidad que añade es:

  • En los lados: maxCardElevation + (1 – cos45) * cornerRadius.
  • En la parte inferior y superior: maxCardElevation * 1.5 + (1 -cos45) * cornerRadius.

El padding se utiliza para compensar el contenido de las sombras, no se puede setear un padding a la CardView. En su lugar, se puede utilizar los atributos de padding en XML o setContentPadding(int, int, int, int) por código para establecer un padding entre los bordes de la vista y los hijos del CardView.

Hay que tener en cuenta que, si se especifican dimensiones exactas para un CardView, debido a las sombras, el área de su contenido puede diferir entre versiones anteriores a Lollipop y posteriores. Usando recursos especiales para cada versión, podemos evitar estas transformaciones.

Para cambiar la elevación de forma compatible para versiones anteriores, utilice setCardElevation(float). CardView utilizará la API de elevación en Lollipop y antes de Lollipop cambiará el tamaño de la sombra. Para evitar mover la vista mientras se cambia el tamaño de la sombra, dicho tamaño se fija por getMaxCardElevation(). Si tenemos que cambiar la elevación de forma dinámica, hay que llamar a setMaxCardElevation(float) cuando se inicializa el CardView.

Ejemplo de uso:

Añadimos en XML:


    
 
        
    

Implementación:

 La implementación es sencilla puesto que se trata de una vista más.

Dependencies:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.android.support:palette-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
    compile 'com.squareup.picasso:picasso:2.4.0'
    compile 'com.android.support:cardview-v7:21.0.+'
}
Fran López

Recent Posts

Curso Android – Cadena en ConstraintLayout

En este primer vídeo del curso de Android desde 0 se explica cómo maquetar una…

2 años ago

Subir JSON Firebase (Firestore Database)

Como siempre, si quieres ver directamente el vídeo donde se realiza toda la configuración pasos…

3 años ago

¿El mejor cargador inalámbrico?

En esta ocasión hacemos una review del cargador inalámbrico Samsung Wireless Charger Duo Pad de…

3 años ago

Batería Galaxy Buds Pro, ¿cuánto duran?

Primero y antes de nada, si quieres ver un vídeo detallado de esta prueba, tienes…

3 años ago

OnePlus 9 Pro, potencia, diseño y precio “ajustado”.

El 23 de marzo se presentaron los nuevos dispositivos de OnePlus. Han sido una grata…

3 años ago

Review Galaxy Buds Pro. ¿MERECEN LA PENA?

Primero y antes de nada, si quieres ver un vídeo detallado de los Samsung Galaxy…

3 años ago