14

Sto usando un RecyclerView per mostrare un elenco di elementi e ho bisogno di rimuovere la spaziatura predefinita tra gli articoli. Sto cercando di impostare RecyclerView.LayoutParams e impostare i margini a zero sul mio LinearLayoutManager ma non ha funzionato!Rimuovi spaziatura tra gli elementi in RecyclerView android

Ecco il mio codice:

layout/fragment_recycler.xml

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/freshSwipeView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/freshRecyclerView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

layout/cardview_recycler.xml

<android.support.v7.widget.CardView 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <mypackagename.ui.view.RecyclingImageView 
      android:id="@+id/avatar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:scaleType="fitXY" 
      android:adjustViewBounds="true" 
      android:src="@drawable/img_no_avatar" /> 

     <TextView 
      android:id="@+id/username" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_vertical" 
      android:singleLine="true" 
      android:ellipsize="end" 
      android:padding="@dimen/spacing" 
      android:textColor="@color/black" 
      android:layout_alignParentBottom="true" 
      android:textSize="@dimen/text_smallest" /> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

RecyclerFragment.java

/* Setting Layout Manager */ 
    mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); 
    RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT); 
    params.setMargins(0,0,0,0); 
    mLayoutManager.canScrollVertically(); 
    mRecyclerView.setLayoutManager(mLayoutManager); 

ho bisogno di aiuto ...

+0

Perché si fa a definire, ma mai usare params nel codice? –

risposta

7

basta rimuovere il CardView nel vostro layout/cardview_recycler.xml, Android applica una distanza che non si desidera

<LinearLayout 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <mypackagename.ui.view.RecyclingImageView 
     android:id="@+id/avatar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scaleType="fitXY" 
     android:adjustViewBounds="true" 
     android:src="@drawable/img_no_avatar" /> 

    <TextView 
     android:id="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:padding="@dimen/spacing" 
     android:textColor="@color/black" 
     android:layout_alignParentBottom="true" 
     android:textSize="@dimen/text_smallest" /> 
</LinearLayout> 

tutto rimane altro come è

+0

Wow! grazie! – fvasquezjatar

+5

Non c'è modo di regolare la spaziatura inserita nella vista della carta? Voglio mantenere la spaziatura, ma non voglio lo spazio 20dp? – Zapnologica

+0

grazie..Questo ha funzionato anche per me .. –

7

Give android: layout_height = wrap_content invece di match_parent al layout radice dell'articolo

<android.support.v7.widget.CardView 
     android:id="@+id/card_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     ------- 
     ------- 
</android.support.v7.widget.CardView> 
-2

Provare a usare cardElevation = 0DP. Questo dovrebbe rimuovere la spaziatura extra tra gli elementi di recyclerview.

<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="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="2dp" 
    android:layout_marginEnd="2dp" 
    app:cardElevation="0dp"> 

    <LinearLayout 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <mypackagename.ui.view.RecyclingImageView 
     android:id="@+id/avatar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scaleType="fitXY" 
     android:adjustViewBounds="true" 
     android:src="@drawable/img_no_avatar" /> 

    <TextView 
     android:id="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:padding="@dimen/spacing" 
     android:textColor="@color/black" 
     android:layout_alignParentBottom="true" 
     android:textSize="@dimen/text_smallest" /> 
</LinearLayout> 
<android.support.v7.widget.CardView /> 
0

rimuovere la linea setVisibiilty(gone)

dopo la rimozione funziona perfettamente.

0

Nel mio caso sottostante Codice lavorato

<android.support.v7.widget.RecyclerView 
      android:id="@+id/freshRecyclerView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clipToPadding="false" 
      android:scrollbars="vertical" /> 
Problemi correlati