studio recyclerview recycler example cardview card and android android-cardview

recyclerview - Android CardView quitar el relleno



recycler view cardview (4)

¿Cómo me deshago de este relleno extraño en el diseño a continuación:

<?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:background="@color/ColorPrimaryDark"> <android.support.v7.widget.CardView android:layout_width="fill_parent" android:layout_height="wrap_content" card_view:cardCornerRadius="10dp" android:layout_marginTop="9dp" android:layout_marginLeft="9dp" android:layout_marginRight="9dp" card_view:cardElevation="0.01dp" android:layout_marginBottom="0dp" card_view:cardPreventCornerOverlap="true" card_view:cardUseCompatPadding="true" card_view:cardBackgroundColor="@color/ColorPrimary"> <RelativeLayout android:id="@+id/top_layout" android:layout_width="fill_parent" android:layout_height="180dp" android:background="@color/ColorPrimary"> <ImageView android:id="@+id/img_thumbnail" android:layout_width="fill_parent" android:layout_height="180dp" android:scaleType="fitXY" android:background="@drawable/korabltest"/> <RelativeLayout android:id="@+id/inner_layout" android:layout_width="fill_parent" android:layout_height="36dp" android:background="#5c1b1b1b" android:layout_gravity="bottom" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <TextView android:id="@+id/tv_nature" android:layout_width="wrap_content" android:layout_height="50dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:layout_gravity="bottom" android:gravity="center_vertical" android:alpha="0.8" android:textColor="#fff" android:textSize="18sp" android:text="Lexington" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:id="@+id/tv_nature_1" android:layout_width="wrap_content" android:layout_height="50dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:layout_gravity="bottom" android:gravity="center_vertical" android:alpha="0.8" android:textColor="#fff" android:textSize="18sp" android:textStyle="bold" android:text="527 (31%)" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> </RelativeLayout> </RelativeLayout> </android.support.v7.widget.CardView> </LinearLayout>


Por favor, elimine esto de su código -

card_view:cardUseCompatPadding="true"


Tengo el mismo problema y this me funcionó.

app:cardPreventCornerOverlap="false"

Para el dispositivo con API <21, tuve que crear una clase personalizada de ImageView, anular el onDraw para dibujar las esquinas redondas.

@Override protected void onDraw(Canvas canvas) { float radius = getContext().getResources().getDimension(R.dimen.card_corner_radius); Path path = new Path(); RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight()); path.addRoundRect(rect, radius, radius, Path.Direction.CW); canvas.clipPath(path); super.onDraw(canvas); }


utilizar esta:

cardView.setPadding(0,0,0,0); cardView.setUseCompatPadding(true); cardView.setContentPadding(-6,-6,-6,-6); cardView.setPreventCornerOverlap(false);


UDPATE

Bueno, parece que hay una forma mucho más fácil de hacerlo, sin adivinar el relleno y todo:

card_view:cardPreventCornerOverlap="false"

o utilizando java:

cardView.setPreventCornerOverlap(false)

Puedes leer todo sobre esto here .

RESPUESTA ORIGINAL

Es un relleno intencional para evitar que el contenido se desangre de la esquina redondeada de la tarjeta en versiones anteriores a la piruleta (ya que el recorte no está disponible). Si desea deshacerse de todo esto, puede utilizar un relleno negativo en las versiones anteriores a la paleta para el atributo CardView de CardView , como:

card_view:contentPadding="-8dp"

o utilizando java:

int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()); cardView.setContentPadding(-padding,-padding,-padding,-padding);

No estoy particularmente seguro de qué valor funcionará sin problemas, tendrá que experimentar y ver por sí mismo.