2016-07-25 18 views
4

다른 열/행 크기 그리드 구현하는 방법 :안드로이드 :이 같은 것을 구현해야

enter image description here

이 StaggeredGridLayoutManager 것 같다 일 | GridLayoutManager가 그것을 수행 할 수 없습니다. 지금 어떻게 구현합니까?

GridView의 성능이 우수할까요?

답변

2

내가이 LIB의 1.0.0-SNAPSHOT 버전을 테스트 twoway-view

와 RecyclerView 행동의이 종류를 달성 할 수있다.

오래된 프로젝트 (더 이상 유지 관리하지 않음)이지만 개인 RecyclerView/LayoutManager를 작성하는 데 도움이 될 수 있습니다. 레이아웃의

예 RecyclerViewAdapter에서

당신은 스팬 로직을 설정해야합니다

<org.lucasr.twowayview.widget.TwoWayView 
     android:id="@+id/fragment_drawer_list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="60dp" 
     android:clipToPadding="false" 
     android:paddingBottom="32dp" 
     app:twowayview_layoutManager="SpannableGridLayoutManager" 
     app:twowayview_numColumns="3" 
     app:twowayview_numRows="3" /> 

결과 스크린 샷 : 나는 도서관 (TwoWayView)에서 사용자 정의 RecyclerView을 사용

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     super.onBindViewHolder(holder, position); 
     final SpannableGridLayoutManager.LayoutParams lp = 
       (SpannableGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); 

     final int span1; 
     final int span2; 
     if (position == 0) { 
      span1 = 2; 
      span2 = 2; 
     } else if (position == 3) { 
      span1 = 2; 
      span2 = 3; 
     } else { 
      span1 = 1; 
      span2 = 1; 
     } 

     final int colSpan = (span2); 
     final int rowSpan = (span1); 

     if (lp.rowSpan != rowSpan || lp.colSpan != colSpan) { 
      lp.rowSpan = rowSpan; 
      lp.colSpan = colSpan; 
      holder.itemView.setLayoutParams(lp); 
     } 
} 

: result screenshot