Dibujable como fondo para CardView

5 minutos de lectura

el CardView ( android.support.v7.cardview ) permanece en blanco a pesar de que configuré un backround dibujable a través de android: backround – La documentación me da la sensación de que debería funcionar. No tengo idea de lo que estoy haciendo mal aquí.

avatar de usuario
phil

Sé que esta es una vieja pregunta, pero tengo una solución simple: simplemente haga que el primer hijo de su Vista de tarjeta un ImageView y especifique el tipo de escala a fitXY. Puede deshacerse del relleno adicional de CardView configurando cardElevation y cardMaxElevation a 0dp:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:cardCornerRadius="4dp"
    app:cardElevation="0dp"
    app:cardMaxElevation="0dp">

    <ImageView
        android:src="https://stackoverflow.com/questions/27299291/@drawable/your_background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"/>

    <... your layout

    .../>


</android.support.v7.widget.CardView>

  • ¿Hay alguna manera de hacer esto sin renunciar a la sombra de la elevación?

    – amitavk

    18 de abril de 2018 a las 15:05

para dibujable o color solo usa:

cvSellerShopp.setBackgroundResource(R.drawable.ic_action_add_image);

para uso de color:

 cvSellerShopp.setCardBackgroundColor(R.color.colorPrimary);

pero este no produce los resultados esperados

Make Cardview albergará un grupo de visualización para, por ejemplo, un diseño relativo en este caso y luego simplemente establecerá cualquier fondo en un diseño relativo.

<?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/list_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dp"
        card_view:cardCornerRadius="4dp"
        card_view:cardUseCompatPadding="true">

        <RelativeLayout
            android:id="@+id/list_container_bg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical">

           <!--Add cardview contents-->

        </RelativeLayout>
    </android.support.v7.widget.CardView>

Hice que esto funcionara agregando un diseño lineal en la vista de tarjeta y luego configurando cardPreventCornerOverlap en falso en la vista de tarjeta.

   <android.support.v7.widget.CardView
    android:id="@+id/result_cv"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_margin="4dp"
    app:cardCornerRadius="16dp"
    app:cardElevation="8dp"
    app:cardPreventCornerOverlap="false"
    >

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/gradient"
        android:gravity="center"
        >

       <!-- your views -->

    </LinearLayout>

    </android.support.v7.widget.CardView>

avatar de usuario
Ankit Deshmukh

El comando que usé fue:

cardView.setBackgroundResource(R.drawable.card_view_bg);

dónde card_view_bg es un archivo de recursos XML personalizado.

Si tiene algunos diseños dentro de la vista de tarjeta y estos diseños se superponen con los márgenes de la vista de tarjeta, es posible que necesite un archivo de recursos de fondo personalizado separado para los diseños como el que usé para el fondo de la vista de tarjeta.

Prueba esto

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/list_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    card_view:cardCornerRadius="4dp"
    card_view:cardUseCompatPadding="true">

    <RelativeLayout
        android:id="@+id/list_container_bg"
        android:layout_width="match_parent"
        android:background="@drawable/yourbackground"
        android:layout_height="match_parent">

       <!--Add cardview contents-->

    </RelativeLayout>
</android.support.v7.widget.CardView>

card_view:cardBackgroundColor=”@android:color/holo_green_dark

aquí puede configurar cualquier color o hacerlo transparente dando color transparente y si usa una varita dibujable como imagen o svg, coloque el fondo RelativeLayout

avatar de usuario
Chandan

Puede usar el diseño LinearLayout o Relative dentro de CardView y establecer un fondo dibujable como se muestra a continuación:

<android.support.v7.widget.CardView
    android:id="@+id/card6"
    android:layout_width="180dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="8dp"
    android:layout_marginTop="10dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/card4"
    app:cardCornerRadius="10dp"
    app:cardElevation="4dp"
    app:cardMaxElevation="8dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/card_bg"
        android:padding="10dp">

        <ImageView
            android:id="@+id/card6Image"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_gravity="center_horizontal"
            android:src="https://stackoverflow.com/questions/27299291/@mipmap/ic_launcher_round" />

        <TextView
            android:id="@+id/card6Title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:padding="5dp"
            android:text="Daily Check In"
            android:textColor="#ffffff"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/card6Description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="5dp"
            android:text="Just Check in Daily and Earn Credits"
            android:textColor="#ffffff"
            android:textSize="10sp" />
    </LinearLayout>

</android.support.v7.widget.CardView>

A continuación se muestra mi archivo de recursos Drawable:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" >
<gradient
    android:angle="90"
    android:centerColor="#555994"
    android:endColor="#b5b6d2"
    android:startColor="#555994"
    android:type="linear" />

<corners
    android:radius="0dp"/>

¿Ha sido útil esta solución?