Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I decrease the space between cards in a CardView within a RecyclerView?

I'm working on a layout for the main screen of my app. I'm using a RecyclerView with a grid layout and a CardView within that. I'm trying to decrease the space between each card. A screenshot is below (with layout outlines turned on) as well as my layout files. How can I get each card to be a bit closer to each other vertically as well as horizontally? I've been playing around with margins a lot and I just can't seem to find the right margin or padding value to do this.

enter image description here

thumbnail_view.xml:

<?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/card_view"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    card_view:cardCornerRadius="5dp"
    card_view:cardMaxElevation="15dp"
    card_view:cardElevation="10dp"
    card_view:contentPadding="5dp"
    android:padding="1dp"
    card_view:cardBackgroundColor="@color/colorPrimary"
    card_view:cardUseCompatPadding="true"
    card_view:cardPreventCornerOverlap="false"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/card_list">
        <ImageView
            android:id="@+id/thumbnail"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:contentDescription="@string/video_thumbnail_description"
            android:layout_weight="1"
            />

        <TextView
            android:id="@+id/video_title_view"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_weight="2"
            />
    </LinearLayout>
</android.support.v7.widget.CardView>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.app.int_a.giantbombforandroid.main.mainscreen.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_list"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>
like image 680
intA Avatar asked Apr 08 '17 20:04

intA


People also ask

How do I remove spaces between items in RecyclerView?

Try to use cardElevation=0dp. This should remove the extra spacing between recyclerview items.

How do I customize my CardView?

Customized CardView First, add a CardView dependency to the application-level build. gradle file. Then create a drawable background for the cards. For that, create a new drawable resource file inside the drawable folder.

How do I add padding to CardView?

How to set padding in CardView in android? Since padding is used to offset content for shadows, you cannot set padding on CardView. Instead, you can use content padding attributes in XML or setContentPadding in code to set the padding between the edges of the CardView and children of CardView.


2 Answers

Edit these attributes

card_view:cardMaxElevation="1dp"
card_view:cardElevation="1dp"

so full code will be

<?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/card_view"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    card_view:cardCornerRadius="5dp"
    card_view:cardMaxElevation="1dp"
    card_view:cardElevation="1dp"
      card_view:cardBackgroundColor="@color/colorPrimary"
    card_view:cardUseCompatPadding="true"
    card_view:cardPreventCornerOverlap="false"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/card_list">
        <ImageView
            android:id="@+id/thumbnail"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:src="@drawable/bag"
            android:contentDescription="string/video_thumbnail_description"
            android:layout_weight="1"
            />

        <TextView
            android:id="@+id/video_title_view"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="lovelksdjslkdjlsdj"
            android:layout_weight="3"
            />
    </LinearLayout>
</android.support.v7.widget.CardView>
like image 117
Elsunhoty Avatar answered Oct 10 '22 00:10

Elsunhoty


<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:cardCornerRadius="4dp"
    app:cardElevation="1dp"
    app:cardMaxElevation="1dp"
    app:cardUseCompatPadding="true" >  //this line is game changer
like image 37
Nenad Štrbić Avatar answered Oct 10 '22 01:10

Nenad Štrbić