2

내가 아래 그림과 같이 분할을 얻으려면 볼 인하 :RecyclerView ItemDecoration 분배기 내 아이가

what i want

나는 모든 컬럼에 동일한 폭을 원하지만 다른 간격. 은 지금 내 첫 번째 열 및 마지막 열은 다음과 같이 잘라왔다 :

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

내가이 문제를 어떻게 해결할 수

: 여기

what i have now

ItemDecoration 내입니까? 감사!

답변

0

사실 매개 변수 getItemOffsetsoutRect 매개 변수에 설정된 값이 항목의 공간을 차지합니다.

나는이 문제를 실제로 해결 한 SCommonItemDecoration을 구현했습니다.

은 참조하십시오 : ibosong/CommonItemDecoration

늦은 대답하지만 같은 요구 사항이 다른 사람에 대한 수도 도움.