2016-03-31 18 views
1

Ich versuche, einen Fangmechanismus für meine horizontale RecyclerView zu implementieren, und ich verwende this Code, um es zu tun.Snapping RecyclerView Android

Aber zwischen all meinen Kind-Objekten scheint ein wenig Platz zu sein. Bitte siehe Screenshot unten (Ich darf keine Bilder noch einzubetten, so bitte die Verbindung überprüfen):

enter image description here

Ich bin nicht sicher, warum es Abstand zwischen meinem Kind Gegenstände ist. Ich fifured, es hat etwas unten mit diesem Code zu tun:

private void setMarginsForChild(View child) { 
    int lastItemIndex = getLayoutManager().getItemCount() - 1; 
    int childIndex = getChildPosition(child); 
    if(childIndex != -1) ((SampleAdapter)getAdapter()).setSelection(childIndex); 
    int startMargin = childIndex == 0 ? getMeasuredWidth()/2 : getMeasuredWidth()/2; 
    int endMargin = childIndex == lastItemIndex ? getMeasuredWidth()/2 : getMeasuredWidth()/2; 

    //RTL works for API 17+ 
    if (ViewCompat.getLayoutDirection(child) == ViewCompat.LAYOUT_DIRECTION_RTL) { 
     // The view has RTL layout 
     ((ViewGroup.MarginLayoutParams) child.getLayoutParams()).setMargins(endMargin, 0, startMargin, 0); 
    } else { 
     // The view has LTR layout 
     ((ViewGroup.MarginLayoutParams) child.getLayoutParams()).setMargins(startMargin, 0, endMargin, 0); 
    } 
    child.requestLayout(); 
} 

Aber wenn ich nicht setzen Marge auf untergeordnete Elemente, die recyclerView Artikel Snap nicht in der Mitte des Bildschirms. Könnte mir jemand helfen, mich in die richtige Richtung zu lenken?

+0

Irgendwelche Hilfe? Irgendwelche Vorschläge, um mich in die richtige Richtung zu weisen? – user6137836

Antwort

0

So habe ich es funktioniert mit dieser code. Es ist ein benutzerdefinierter ScrollListener, mit dem ein Listenelement nach dem Scrollen in die Mitte gerissen werden kann. Nur für den Fall, dass jemand dieses Problem in der Zukunft hat

0

gibt es eine andere Option layoutmanagers und insbesondere SnapperLinearLayoutManager, die dieses Verhalten in einem Layout-Manager zusammen mit anderen praktischen Funktionen umschließt.

für weitere Informationen und Beispiele überprüfen here

+0

Danke. Wir werden es auf jeden Fall überprüfen und Sie wissen lassen – user6137836