2

をカット。 は今の私の最初の列と最後の列は次のようにカットされています:RecyclerView ItemDecoration分圧器は、私は下の画像のような仕切りを取得したい私の子ビュー

what i have now

ここに私の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)); 
    } 
} 

私はこれをどのように修正することができますか?ありがとう!

答えて

0

実際、getItemOffsetsのパラメータの値がoutRectに設定されていると、アイテムの領域が占有されます。

実際にこの問題を解決するSCommonItemDecorationを実装しました。 ibosong/CommonItemDecoration

後半の答えを同じ要件を持つ他の人のために役立つことがあります。

を参照してください。

関連する問題