2016-09-28 2 views
12

Ich verwende RecyclerView mit StaggeredGridLayoutManager.RecyclerView AutoFit LayoutManager

Ich möchte diese StaggeredGridLayoutManager oder welche LayoutManager besetzen leere Bereiche, wenn es gibt. Zum Beispiel wenn ich den SpanCount = 3 setze muss es alle Bildschirmbreite besetzen, auch wenn ich 2 Items oder 1 Items habe. In StaggeredGridLayoutManager kann ich einzelne Zeile durch: setFullSpan(true); Vollspanne überspannen aber kann nicht 2 Felder für nur eine Reihe aufspannen.

Mein Code für RecyclerView:

StaggeredGridLayoutManager sglm= new StaggeredGridLayoutManager(spanCount,StaggeredGridLayoutManager.VERTICAL); 
sglm.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS); 

versuchte ich AsymmetricGridView und twoway-view aber es gibt immer einen leeren Bereich

Ich sammle einige Screenshots von Facebook-App:

enter image description here

Und Hier ist die Google Keep App, wie Sie sehen können, ist die Zeilenhöhe für jede Zeile bu festgelegt t die Breite der Elemente flexibel ist, und ich habe nie ein leerer Bereich mit Google Keep gesehen:

enter image description here

Und wenn ich es benutze es gibt immer einen leeren Bereich, wie Sie den schwarzen Teil sehen können Bild ist leer. Ich mag die RecyclerView soll diesen Bereich besetzt durch meine Zeilen wie in Google erstreckt App halten:

enter image description here

Ich besuchte diese Seite: android-how-to-create-a-facebook-like-images-gallery-grid aber es hat mir nicht geholfen.

Hier ist die andere Seite, die ich besucht: grid-of-images-like-facebook-for-android

Gibt es jemand nutzt RecyclerView oder jede View wie das? Kann mir jemand irgendeinen Weg oder irgendeine Idee vorschlagen oder mich dorthin führen, wo ich anfangen muss?

+0

wenn schwarzen Teil Teil des Bildes ist ich denke, es kann nicht aufgelöst werden. Die Verwaltung der Bildschirmbreite und das Zurücklassen von zusätzlichem Speicherplatz können jedoch nicht gelöst werden. –

+0

@HammadTariq Wenn Sie sich Google Keep ansehen, ist die Zeilenhöhe für jede Zeile und ihre Bilder flexibel. Du siehst also nie den schwarzen Teil darauf. Ich kann die Breite fixieren, aber am unteren Rand von 'RecyclerView' sehe ich immer mehr Platz. Gibt es irgendeinen Ansatz oder irgendeinen Weg, um den Platz an der Unterseite zu verhindern? –

+0

Sie möchten allen Zeilen die gleiche Höhe zuweisen? oder sollten alle Zeilenelemente dieselbe Höhe haben? Wenn Sie möchten, dass alle Zeilen und ihre Elemente die gleiche Höhe haben, ist das möglich. –

Antwort

2
/** 
* A LayoutManager that lays out children in a staggered grid formation. 
* It supports horizontal & vertical layout as well as an ability to layout children in reverse. 
* <p> 
* Staggered grids are likely to have gaps at the edges of the layout. To avoid these gaps, 
* StaggeredGridLayoutManager can offset spans independently or move items between spans. You can 
* control this behavior via {@link #setGapStrategy(int)}. 
*/ 


/** 
* Sets the gap handling strategy for StaggeredGridLayoutManager. If the gapStrategy parameter 
* is different than the current strategy, calling this method will trigger a layout request. 
* 
* @param gapStrategy The new gap handling strategy. Should be 
*     {@link #GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS} or {@link 
*     #GAP_HANDLING_NONE}. 
* @see #getGapStrategy() 
*/ 
public void setGapStrategy(int gapStrategy) { 
    assertNotInLayoutOrScroll(null); 
    if (gapStrategy == mGapStrategy) { 
     return; 
    } 
    if (gapStrategy != GAP_HANDLING_NONE && 
      gapStrategy != GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS) { 
     throw new IllegalArgumentException("invalid gap strategy. Must be GAP_HANDLING_NONE " 
       + "or GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS"); 
    } 
    mGapStrategy = gapStrategy; 
    setAutoMeasureEnabled(mGapStrategy != GAP_HANDLING_NONE); 
    requestLayout(); 
} 
+0

Wenn Sie meine Frage betrachten, habe ich bereits diese. –

3

prüfen diese auf Git

BitFrames

Es hilft Ihnen, Bilder zu setzen, wie Sie wollen.

prüfen diese auf Play Store

PlayStore App

+0

Ich werde dieses Projekt versuchen und Sie das Ergebnis wissen lassen. Danke –

+0

Verwenden Sie dieses Projekt –

+0

Es ist das Projekt meines alten Kollegen. Er ist Genie. Bereits in einem Projekt implementiert. Es ist toll. – SANAT

Verwandte Themen