2

ich Teiler wie das unten stehende Bild erhalten möchten:RecyclerView ItemDecoration Teiler schneidet mein Kind sieht

what i want

ich alle Spalten die gleiche Breite wollen, aber mit unterschiedlichem Abstand. Gerade jetzt meine erste Spalte und die letzte Spalte ist wie folgt geschnitten worden:

what i have now

Hier ist mein ItemDecoration:

public class MoreIndexItemDividerDecoration extends RecyclerView.ItemDecoration { 
    private GridLayoutManager mGridLayoutManager; 
    private GridLayoutManager.SpanSizeLookup mSpanSizeLookup; 
    private int mSpanCount; 

    public MoreIndexItemDividerDecoration(GridLayoutManager manager, int spanCount) { 
     mGridLayoutManager = manager; 
     mSpanSizeLookup = mGridLayoutManager.getSpanSizeLookup(); 
     mSpanCount = spanCount; 
    } 

    @Override 
    public void getItemOffsets(Rect outRect, View child, RecyclerView parent, RecyclerView.State state) { 
     int pos = parent.getChildLayoutPosition(child); 
     int left = 0; 
     int top = 0; 
     int right = 0; 
     int bottom = 0; 

     if (mGridLayoutManager.getItemViewType(child) == 1) { 
      if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == 0) { 
       left = 50; 
      } else { 
       left = 5; 
      } 
      if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == mSpanCount - 1) { 
       right = 50; 
      } else { 
       right = 5; 
      } 
      top = 5; 
      bottom = 5; 
     } else { 
      if (mSpanSizeLookup.getSpanGroupIndex(pos, 4) != 0) { 
       top = 45; 
      } 
      bottom = 45; 
     } 

     outRect.set(left, top, right, bottom); 
     HtscLog.e("child pos: " + pos + " span size: " + mSpanSizeLookup.getSpanSize(pos) + " group index: " + mSpanSizeLookup.getSpanGroupIndex(pos, 4) + " index: " + mSpanSizeLookup.getSpanIndex(pos, 4) + " view type: " + mGridLayoutManager.getItemViewType(child)); 
    } 
} 

Wie kann ich dieses Problem beheben? Vielen Dank!

Antwort

0

In der Tat, Werte in getItemOffsetsoutRect Parameter besetzt den Platz des Artikels.

Ich habe eine SCommonItemDecoration implementiert, die dieses Problem tatsächlich löst.

Bitte beachten Sie: ibosong/CommonItemDecoration

eine späte Antwort kann aber hilfreich für andere, die die gleiche Anforderung haben.