¿El relleno innecesario en CardView?

He implementado CardView en mi aplicación y todo funciona bien, excepto que hay un poco de relleno alrededor de la imagen si pongo radio a la tarjeta.

Aparece así: Screenshot_2014-12-27-20-31-55

Pero en los documentos android y en este artículo la imagen toma el cardview entero, así que u puede ayudarme a lograr eso.

Mi archivo de diseño es como:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp" card_view:cardBackgroundColor="@android:color/white" card_view:cardCornerRadius="4dp"> <ImageView android:id="@+id/media_image_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:alpha="0.8" android:background="?attr/colorPrimary" android:padding="4dp"> <TextView android:id="@+id/media_download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:textSize="11sp"/> <TextView android:id="@+id/category_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="@color/primary_text" android:textSize="12sp"/> </RelativeLayout> </android.support.v7.widget.CardView> </LinearLayout> 

NOTA: La captura de pantalla se captura en un dispositivo pre-pirulí.

Fui a través de los documentos del desarrollador de nuevo y encontré que:

En la API 20 y antes, CardView no corta los límites de la tarjeta para las esquinas redondeadas. En su lugar, agrega relleno al contenido de modo que no se superponga con las esquinas redondeadas.

Así que para los dispositivos pre-lollipop tengo que llamar a setPreventCornerOverlap (false); En el cardview.

Actualización: Lo mismo se puede hacer a través del código xml añadiendo la app:cardPreventCornerOverlap="false" en la vista de la tarjeta.

Establecer la app:cardPreventCornerOverlap="false" resolverá el problema, pero también eliminará todos los dispositivos de pre-piruletas. Si desea una esquina redonda en todos los dispositivos, agregue manualmente:

Card_view_round_corner_background.xml

  <?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="@color/transparent"/> <stroke android:width="2dp" android:color="@color/Black"/> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="@color/transparent"/> <corners android:radius="6dp"/> <stroke android:width="2dp" android:color="@color/Black"/> </shape> </item> </layer-list> 

En cardview

  <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:clickable="true" android:foreground="?android:attr/selectableItemBackground"card_view:cardCornerRadius="@dimen/conner_radius" card_view:cardBackgroundColor="@color/Black" card_view:cardElevation="@dimen/z_card"> <!-- Put your card contain here --> <View android:background="@drawable/card_view_round_corner_border" android:layout_width="match_parent" android:layout_height="match_parent" /> 

Pero esta solución sólo funciona en fondo sólido como negro o blanco.

  • ¿Puede alguien explicar el attr?
  • Cómo configurar el fondo de la barra de herramientas de contracción con el comportamiento personalizado para adaptarse a toda la pantalla
  • Android Imageview rellena el ancho de la pantalla
  • Cómo cambiar el estilo de texto en el fragmento de preferencia
  • ¿Cómo conservo el resaltado de elementos seleccionado en gridview cuando cambia numColumns?
  • SDK 5.0 RecyclerView no se puede instanciar
  • Card_view: cardElevation sólo aparece en api <21
  • Android dibuja una línea horizontal entre vistas
  • ¿Barra de herramientas Android con dos líneas en el título?
  • ¿Por qué nextFocusDown no funciona con la navegación de TalkBack?
  • La visibilidad de la barra de progreso de carga de fragmentos dinámicos de Android no se establecerá
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.