1

Ich verwende GridLayoutManager von recyclerview, um benutzerdefinierte Galerie in meiner App anzuzeigen. Ich habe alle Funktionen wie Galerie implementiert. Aber da ist eine kleine Sache, mit der ich feststecke. In einer Reihe habe ich 3 Bilder. Aber ich muss den Abstand zwischen den Bildern reduzieren. Dabei möchte ich nicht mehr als 3 Bilder hintereinander zeigen, aber die Bildgröße (falls benötigt) kann sich erhöhen.So reduzieren Sie den Abstand zwischen Spalten in der Recycler-Ansicht (GridLayoutManager) in Android

+1

das Sie http://stackoverflow.com/questions/28531996/android-recyclerview-gridlayoutmanager-column-spacing –

+0

Danke kann helfen können, ich das versucht hatte, , aber oben in der ersten Bildansicht wird kein Leerzeichen hinzugefügt. und zusätzlicher Platz in der letzten Bildansicht hinzugefügt. auch der horizontale und vertikale Abstand ist nicht gerade. –

+0

Bilder hinzufügen, für was ist jetzt und was willst du? –

Antwort

3

können Sie verwenden, um benutzerdefinierte RecyclerViewItemDecorator:

public class RecyclerViewItemDecorator extends RecyclerView.ItemDecoration { 
    private int spaceInPixels; 

    public RecyclerViewItemDecorator(int spaceInPixels) { 
    this.spaceInPixels = spaceInPixels; 
    } 

    @Override 
    public void getItemOffsets(Rect outRect, View view, 
     RecyclerView parent, RecyclerView.State state) { 
    outRect.left = spaceInPixels; 
    outRect.right = spaceInPixels; 
    outRect.bottom = spaceInPixels; 

    if (parent.getChildLayoutPosition(view) == 0) { 
     outRect.top = spaceInPixels; 
    } else { 
     outRect.top = 0; 
    } 
    } 
} 

Dann fügen Sie es zu Ihrem RecyclerView:

// For example 10 pixels 
int spaceInPixels = 10; 
mRecyclerView.addItemDecoration(new RecyclerViewItemDecorator(spaceInPixels)); 

Hoffe es hilft!

0

verwenden für den Recycler Ansicht,

this.mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3)); 
    this.mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getContext()) 
      .color(Color.DKGRAY) 
      .build()); 
    this.mRecyclerView.addItemDecoration(new VerticalDividerItemDecoration.Builder(getContext()) 
      .color(Color.DKGRAY) 
      .build()); 

und in Ihrem Layout-Datei für jeden Artikel, stellen Sie das Bild in einer solchen Art und Weise die Ränder des Behälters zu erfüllen.

zB:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RlayoutGrid" 
    android:layout_width="220dp" 
    android:layout_height="170dp" 
    android:background="@android:color/black"> 


    <ImageView 
     android:id="@+id/prefence_imageButton" 
     android:layout_width="match_parent" 
     android:layout_height="170dp" 
     android:background="@android:color/black" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:scaleType="fitXY" 
     /> 

</RelativeLayout> 

und fügen Sie diese zu Ihrer build.gradle

compile 'com.yqritc:recyclerview-flexibledivider:1.2.4' 
+0

Es heißt, kann nicht aufgelöst werden HorizontalDividerItemDecoration.Builder und VerticalDividerItemDecoration.Builder –

+0

@DAgrawal Sie haben vergessen, die Abhängigkeit hinzuzufügen. Ja, ich bin Nekropolistin. – 0neel

0

Abstand entfernen Sie outRect.setEmpty()

RecyclerView.ItemDecoration divider = new RecyclerView.ItemDecoration(){ 
    @Override 
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 
     outRect.setEmpty(); 
    } 
}; 
grid.addItemDecoration(divider); 
Verwandte Themen