Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android CardView remove padding

how do I get rid of this strange padding in the layout below:

enter image description here

<?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> 
like image 397
Ivan Fazaniuk Avatar asked Jul 08 '15 17:07

Ivan Fazaniuk


1 Answers

UDPATE

Well, seems there is a much easier way to do it, without guessing the padding and all:

card_view:cardPreventCornerOverlap="false" 

or using java:

cardView.setPreventCornerOverlap(false) 

You can read all about it here.

ORIGINAL ANSWER

It is an intentional padding to avoid content from bleeding off the rounded corner of the card in pre lollipop versions (since clipping is not available). If you want to get rid of it all together you may use a negative padding in pre-lollipop versions for the contentPadding attribute of the CardView such as:

card_view:contentPadding="-8dp" 

or using java:

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

I'm not particularly sure which value will work seamlessly, you'll need to experiment and see for yourself.

like image 171
fahmy Avatar answered Oct 24 '22 00:10

fahmy