2016-06-17 16 views
0

Hi möchte fragen, ob jemand weiß, was ist falsch mit Recycleview mit so viel Abstand zwischen Bildern? Das Folgende ist, wie ich versucht habe, Rand zu verwenden, um die Räume zu steuern, aber es scheint nicht die richtige Lösung für mein Problem.Wie entferne ich den Abstand zwischen den Bildern im Recycleview?

<android.support.v7.widget.RecyclerView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/galleryRecyclerView" 
    android:clipToPadding="false" 
    android:layout_below="@id/displayGalleryView" 
    android:longClickable="false" /> 

Und das Bild xml:

<ImageView 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:layout_marginLeft="-70dp" 
     android:id="@+id/imageGalleryView" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

I margin verwendet, um die Räume zu kontrollieren und es hat funktioniert, bevor ich andere Funktionen integrieren, es ist so seltsam.

Image here

mRecyclerView = (RecyclerView) findViewById(R.id.galleryRecyclerView); 
    LinearLayoutManager layoutManager = new LinearLayoutManager(this); 
    layoutManager.setOrientation(layoutManager.HORIZONTAL); 
    RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 0, 0, 0); 
    layoutManager.canScrollHorizontally(); 
    mRecyclerView.setLayoutManager(layoutManager); 

    mRecyclerView.addItemDecoration(new RecyclerViewItemDecorator(1)); 

    RecyclerView.Adapter imageAdapter = new GalleryImageAdapter(mGalleryFolder); 
    mRecyclerView.setAdapter(imageAdapter); 

Antwort

0

Sie Lücke zwischen den einzelnen Posten in Recycler Ansicht reduzieren ...

verwenden diese als innere Klasse.

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; 
      } 
     } 
    } 

Anruf

list.addItemDecoration (new RecyclerViewItemDecorator (1));

bevor Sie den Adapter Einstellung

+0

die Methode hinzugefügt, hat nicht funktioniert .. – user2641733

+0

stellen Sie sicher gültigen Parameter verwendet. Wenn der Code nicht funktioniert, versuchen Sie, margintop mit den Werten -ve zu verwenden. Hoffe das wird dir eine Lösung geben. –

+0

Ich benutze LinearLayoutManager! Es ist marginLeft, aber es wird nicht funktionieren! Ich versuche ViewPager Methode .. – user2641733

Verwandte Themen