2016-01-28 3 views
0

Я пытаюсь создать ItemDecoration, нарисованную как разделитель между элементами RecyclerView с левым заполнением.RecyclerView ItemDecoration

В настоящее время я эту реализацию внутри класса ItemDecoration:

@Override 
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { 
    final int left = parent.getPaddingLeft(); 
    final int right = parent.getWidth() - parent.getPaddingRight(); 
    final RecyclerView.LayoutManager lm = parent.getLayoutManager(); 
    final int childCount = parent.getChildCount(); 

    for (int i = 0; i < childCount; i++) { 
     final View child = parent.getChildAt(i); 
     RecyclerView.ViewHolder viewHolder = parent.getChildViewHolder(child); 

     final int top = lm.getDecoratedBottom(child); 
     final int bottom = top + mDivider.getIntrinsicHeight(); 
     mDivider.setBounds(left + 40, top, right, bottom); 
     mDivider.draw(c); 
    } 
} 

Но, похоже, делитель еще рисунок себя всю ширину. Так что я делаю неправильно?

Я также попытался установить InsetDrawable с левыми вставками (из xml), как разделитель, но похоже, что он вообще не будет рисовать его.

PS. Это значение 40 просто жестко закодированное, для пояснительной цели. mDivider - это Drawable.

+0

Заканчивать http://www.gadgetsaint.com/android/recyclerview-header-footer-pagination/ – ASP

ответ

0

Вы можете следить за this tutorial или просто читать this answer.

совет:

Для просто добавьте левый отступы:

@Override 
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 
    outRect.left = 30; 
}