2016-05-29 14 views
28

Hallo, ich bin nach diesem TutorialMargin zwischen den einzelnen Posten in Recycler Ansicht Android

http://www.journaldev.com/10024/android-recyclerview-and-cardview-example-tutorial

Jetzt bin ich eine seltsame Frage, die sich die Spanne zwischen jedem cardview Punkt im Inneren Recycler Ansicht Weise viel zu ist.

AUSGABE

Wie die Spanne zwischen jedem Element der cardview innerhalb Recycler gebracht werden, um zu reduzieren.

enter image description here

+0

Jede mögliche Hilfe unter –

+0

siehe meine Antwort geschätzt. – Ironman

Antwort

51

ich ähnliches Problem konfrontiert, mit RelativeLayout als Stammelement für jede Zeile in der recyclerview.

Um das Problem zu lösen, finden Sie die XML-Datei, die jede Zeile enthält und stellen Sie sicher, dass die Höhe des Stammelements wrap_content NOT match_parent ist.

+1

ja das funktionierte, musste Elternteil relatives Layout Elternteil entfernen, um Inhalt zu verpacken –

+1

Danke, dass du mein Leben gerettet hast .... –

+0

funktioniert wie charm..thanku –

21
  1. Finden Sie das Attribut card_view:cardUseCompatPadding="true" in cards_layout.xml und löschen. Starten Sie die App und Sie werden feststellen, dass zwischen den einzelnen Kartenansichtsposten kein Spielraum ist.

  2. Fügen Sie Randattribute hinzu, die Ihnen gefallen. Ex:

    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" 
    
+1

Danke, arbeitete für mich, obwohl es nur ein Fall war, in dem card_view: cardUseCompatPadding = "true" die Aufgabe nicht erfüllte –

17

Ich habe eine Klasse, dieses Problem zu verwalten. Diese Klasse legt unterschiedliche Ränder für die Elemente in der recycleView fest: Nur die erste Zeile hat einen oberen Rand und nur die erste Spalte hat einen linken Rand.

public class RecyclerViewMargin extends RecyclerView.ItemDecoration { 
private final int columns; 
private int margin; 

/** 
* constructor 
* @param margin desirable margin size in px between the views in the recyclerView 
* @param columns number of columns of the RecyclerView 
*/ 
public RecyclerViewMargin(@IntRange(from=0)int margin ,@IntRange(from=0) int columns) { 
    this.margin = margin; 
    this.columns=columns; 

} 

/** 
* Set different margins for the items inside the recyclerView: no top margin for the first row 
* and no left margin for the first column. 
*/ 
@Override 
public void getItemOffsets(Rect outRect, View view, 
          RecyclerView parent, RecyclerView.State state) { 

    int position = parent.getChildLayoutPosition(view); 
    //set right margin to all 
    outRect.right = margin; 
    //set bottom margin to all 
    outRect.bottom = margin; 
    //we only add top margin to the first row 
    if (position <columns) { 
     outRect.top = margin; 
    } 
    //add left margin only to the first column 
    if(position%columns==0){ 
     outRect.left = margin; 
    } 
} 

}

Sie es in Ihrem recyclerview

auf diese Weise einstellen
RecyclerViewMargin decoration = new RecyclerViewMargin(itemMargin, numColumns); 
recyclerView.addItemDecoration(decoration); 
+0

Danke @Lenin .. –

0

Änderung in Recycler Ansicht match_parent zu wrap_content:

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycleView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

Auch chang e in Artikel Layout xml

Fabrikat Mutter Layout Höhe match_parent zu wrap_content

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
0

Wenn Sie es in XML tun wollen, setzen jus paddingTop und paddingLeft auf Ihre RecyclerView und eine gleiche Menge layoutMarginBottom und layoutMarginRight zu dem Artikel, den Sie in Ihre RecyclerView (oder umgekehrt) aufblasen.

Verwandte Themen