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?
- Android support-v7 CardView: La vista de texto de encabezado con otro color de fondo no se extiende hasta que los bordes
- AppCompatDrawableManager.get () vs VectorDrawableCompat.create ()
- fitsSystemWindows en el dispositivo API16 no funciona
- La biblioteca de soporte de Android aumenta el tamaño del APK mucho
- TextInputLayout La sugerencia no flotará después de actualizar la biblioteca de asistencia de Google
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.
- Vector Drawables bandera no funciona en la Biblioteca de Soporte 24+
- Forma de indicador de pestaña personalizada en Diseño de soporte de Widget TabLayout
- Cambiar el color del RadioButton en la API 19 y siguientes?
- AS no puede encontrar BottomSheetBehavior_Params, _behavior_peekHeight y _behavior_hideable
- La barra de acciones se muestra incorrectamente al volver del modo inmersivo
- java.lang.NoSuchMethodError: No hay un método estático getDrawable (Landroid / content / Context; I) Landroid / graphics / drawable / Drawable;
- Vista panorámica de Android con pestañas sin utilizar la biblioteca de soporte de V4
- Compatibilidad con GridLayout - ClassNotFoundException: No encontró la clase "android.support.v7.widget.GridLayout"
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:
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>
- Java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
- Google Map Lite en CardView