0

지원 라이브러리에서 DividerItemDecoration을 사용하고 있습니다.DividerItemDecoration 가로 가운데가 나타나지 않음

다음은 장식을

GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3); 
recyclerView.setLayoutManager(gridLayoutManager); 
recyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.HORIZONTAL)); 

를 추가하는 코드입니다 그러나 칸막이 수평 중앙에 표시되지 않습니다.

다음은 스크린 샷입니다. 다음

enter image description here

내가 다음 GridDividerDecoration

를 사용하여 시도 또한

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:clickable="true" 
android:gravity="center" 
android:orientation="vertical" 
android:paddingBottom="8dp" 
android:paddingTop="8dp"> 


<ImageView 
    android:id="@+id/imgFacility" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:layout_gravity="center" 
    android:foreground="@drawable/page_main_category_home_grid_selector" 
    android:gravity="center" 
    android:src="@drawable/plane_img" 
    android:tint="?colorAccent" /> 


<TextView 
    android:id="@+id/txtFacilityName" 
    mediumFontPath="fonts/montserrat-medium.ttf" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginTop="2dp" 
    android:ellipsize="end" 
    android:gravity="center" 
    android:maxLines="2" 
    android:minLines="2" 
    android:text="Facility\nEWlall" 
    android:textColor="#353535" 
    android:textSize="12sp" 
    tools:ignore="MissingPrefix" /> 

</LinearLayout> 

항목 레이아웃을입니다 그것의 출력은

각 레이아웃에 배경 색상을 감안할 때이 방법을 enter image description here

입니다 외모 :

enter image description here

+1

항목 레이아웃 게시. 항목보기에서 정렬 문제가 있어야합니다. – ADM

+0

게시 된 아이템 레이아웃 – apk

+0

Well that 's ?? 컨테이너 레이아웃은 어디에 있습니까? 전체 항목 레이아웃 게시 xml – ADM

답변

0

먼저 그것은 수직 표시하는 데 도움이

recyclerView.addItemDecoration(new DividerItemDecoration(getActivity())); 

처럼 recyclarview이 사용 후 코드

public class DividerItemDecoration extends RecyclerView.ItemDecoration { 

private static final int[] ATTRS = {android.R.attr.listDivider}; 

private Drawable mDivider; 
private int mInsets; 

public DividerItemDecoration(Context context) { 
    TypedArray a = context.obtainStyledAttributes(ATTRS); 
    mDivider = a.getDrawable(0); 
    a.recycle(); 

    mInsets = 1; 
} 

@Override 
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { 
    drawVertical(c, parent); 
    drawHorizontal(c, parent); 
} 

/** 
* Draw dividers at each expected grid interval 
*/ 
public void drawVertical(Canvas c, RecyclerView parent) { 
    if (parent.getChildCount() == 0) return; 

    final int childCount = parent.getChildCount(); 

    for (int i = 0; i < childCount; i++) { 
     final View child = parent.getChildAt(i); 
     final RecyclerView.LayoutParams params = 
       (RecyclerView.LayoutParams) child.getLayoutParams(); 

     final int left = child.getLeft() - params.leftMargin - mInsets; 
     final int right = child.getRight() + params.rightMargin + mInsets; 
     final int top = child.getBottom() + params.bottomMargin + mInsets; 
     final int bottom = top + mDivider.getIntrinsicHeight(); 
     mDivider.setBounds(left, top, right, bottom); 
     mDivider.draw(c); 
    } 
} 

/** 
* Draw dividers to the right of each child view 
*/ 
public void drawHorizontal(Canvas c, RecyclerView parent) { 
    final int childCount = parent.getChildCount(); 

    for (int i = 0; i < childCount; i++) { 
     final View child = parent.getChildAt(i); 
     final RecyclerView.LayoutParams params = 
       (RecyclerView.LayoutParams) child.getLayoutParams(); 

     final int left = child.getRight() + params.rightMargin + mInsets; 
     final int right = left + mDivider.getIntrinsicWidth(); 
     final int top = child.getTop() - params.topMargin - mInsets; 
     final int bottom = child.getBottom() + params.bottomMargin + mInsets; 
     mDivider.setBounds(left, top, right, bottom); 
     mDivider.draw(c); 
    } 
} 

@Override 
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 
    //We can supply forced insets for each item view here in the Rect 
    outRect.set(mInsets, mInsets, mInsets, mInsets); 
} 

}

이하로 사용하여이 장식 클래스를 클래스를 생성하고 항목 간 수평선.

+0

같은 문제에 직면하여이 문제가 발생했습니다. 수평 간격이 적절하지 않습니다. – apk