Cardview esquina fondo no transparente

Tengo una implementación personalizada de un widget de soporte de CardView, pero no puedo conseguir el fondo para las esquinas transparentes cuando lo incluyo en mi archivo de diseño. Sin embargo, si simplemente coloco el widget de soporte de CardView en mi archivo de disposición, de repente funciona. ¿Cómo puedo obtener las esquinas transparentes para mi componente personalizado?

ejemplo

Este es el archivo de diseño para mi implementación personalizada de CardView:

View_card.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/view_card" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/Custom.Widget.CardView"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="@dimen/default_padding"> <TextView android:id="@+id/view_mainText" style="@style/Custom.Widget.TextView.Header" android:textColor="@color/instruction_balloon_text" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/view_subText" android:textSize="@dimen/text_size_medium" android:textColor="@color/instruction_balloon_text" android:singleLine="false" android:text="Please remove white corners :-(" android:textIsSelectable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Styles.xml

 <style name="Custom.Widget.CardView" parent="CardView"> <item name="cardBackgroundColor">@color/card_backgroundColor</item> <item name="cardCornerRadius">12dp</item> </style> 

Y este es mi archivo de diseño que incluye los dos CardViews. El primero con las esquinas blancas y el segundo que es básicamente el mismo diseño que view_card.xml pero sin las esquinas blancas (transparente).

Example.xml

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <some.private.namespace.CardView android:id="@+id/custom_card_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/default_margin" /> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/view_card" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/default_margin" style="@style/Custom.Widget.CardView"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="@dimen/default_padding"> <TextView android:id="@+id/view_mainText" style="@style/Custom.Widget.TextView.Header" android:textColor="@color/instruction_balloon_text" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/view_subText" android:textSize="@dimen/text_size_medium" android:textColor="@color/instruction_balloon_text" android:singleLine="false" android:text="I have no white corners :-)" android:textIsSelectable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v7.widget.CardView> ... some other views </LinearLayout> 

Actualización 1

He intentado la solución de Just89, sin embargo, resulta en un accidente en versiones inferiores de Android.

  android.graphics.drawable.ColorDrawable cannot be cast to android.support.v7.widget.RoundRectDrawableWithShadow 

Después de una búsqueda rápida encontré la siguiente entrada. Android.graphics.drawable.ColorDrawable no se puede convertir en android.support.v7.widget.RoundRectDrawableWithShadow

La respuesta sugiere establecer el color de fondo utilizando: setCardBackgroundColor . Sin embargo, esto traerá de vuelta las esquinas blancas.

Utilice el código siguiente, en un lugar donde está disponible el contexto, en su implementación personalizada:

 setBackgroundColor(ContextCompat.getColor(context, android.R.color.transparent)); 

EDITAR:

Utilice el código siguiente para las versiones de android inferiores a Lollipop para evitar el bloqueo mencionado.

  if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)) { getBackground().setAlpha(0); } else { setBackgroundColor(ContextCompat.getColor(context, android.R.color.transparent)); } 

Parece que está creando una forma CardView personalizada de su archivo de diseño debido a esto

 <some.private.namespace.CardView android:id="@+id/custom_card_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/default_margin" /> 

Su CardView puede estar extendiendo algo (por ejemplo, LinearLayout) y puede estar creando otra vista secundaria dentro de esa vista primaria. Así que trata de establecer el padre inmediato de tu diseño de tarjeta a transparente usando

Definir fondo();

Puede ser que esto ayude.

Añadir un nuevo estilo en el archivo styles.xml similar a esto:

 <style name="CardViewRadius"> <item name="cardBackgroundColor">@color/colorGray</item> <item name="cardCornerRadius">18dp</item> </style> 

y use :

 <android.support.v7.widget.CardView style="@style/CardViewRadius" android:layout_marginTop="15dip" android:layout_width="200dp" android:layout_height="100dp" android:layout_gravity="center_horizontal"/> 

Y resultado: Introduzca aquí la descripción de la imagen

Puede intentar anidar su vista de esquina redondeada dentro de otra vista / diseño. La vista exterior aquí podría tener un fondo transparente, de modo que incluso cuando las esquinas redondeadas de la parte interior dejar espacio en las esquinas, que no se verán ya que la vista exterior tiene un color de fondo transparente. Algo como esto :

 <RelativeLayout> android:background = "@color/transparent" < some.private.namespace.CardView android:margin="8dp" ..... /> </RelativeLayout> 
  • PagerTabStrip no se muestra en ViewPager en la orientación de la aplicación Android 6.X (N)
  • TabLayout falta después de actualizar la biblioteca de soporte de diseño
  • Android recylerview v.23.2.0 y la biblioteca de diseño v.23.2.0 están rotas
  • Error al inflar la clase android.support.v7.widget.Toolbar. ¿Mi error o error?
  • Excepción grave: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23
  • Cómo implementar Bottom Sheets usando la nueva biblioteca de soporte de diseño 23.2
  • El uso de GridLayout de la biblioteca de soporte lleva a 'NoSuchMethodError: android.support.v4.view.ViewCompat.getLayoutDirection'
  • Librería de soporte de Android 23.2 vector drawables are blurry
  • NavigationView obtener / buscar el diseño del encabezado
  • El desplazamiento automático se produce cuando Horizontal RecyclerView se coloca como un elemento en un RecyclerView vertical
  • ¿Cómo utilizar el vector drawables con vista además de ImageView con srcCompat?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.