RecyclerView remove divider / decorator after the last item

前端 未结 9 2123
礼貌的吻别
礼貌的吻别 2020-12-07 17:46

I have a quite simple RecyclerView.
This is how I set the divider:

DividerItemDecoration itemDecorator = new DividerItemDecoration(getContext(), DividerI         


        
9条回答
  •  没有蜡笔的小新
    2020-12-07 18:09

    Try this Code, it won't show divider for the last item. This method will give you more control over drawing divider.

    public class DividerItemDecorator extends RecyclerView.ItemDecoration {
        private Drawable mDivider;
    
        public DividerItemDecorator(Drawable divider) {
            mDivider = divider;
        }
    
        @Override
        public void onDrawOver(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
            int dividerLeft = parent.getPaddingLeft();
            int dividerRight = parent.getWidth() - parent.getPaddingRight();
    
            int childCount = parent.getChildCount();
            for (int i = 0; i <= childCount - 2; i++) {
                View child = parent.getChildAt(i);
    
                RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
    
                int dividerTop = child.getBottom() + params.bottomMargin;
                int dividerBottom = dividerTop + mDivider.getIntrinsicHeight();
    
                mDivider.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom);
                mDivider.draw(canvas);
            }
        }
    }
    

    divider.xml:

    
    
        
        
    
    

    Set your Divider like this:

    RecyclerView.ItemDecoration dividerItemDecoration = new DividerItemDecorator(ContextCompat.getDrawable(context, R.drawable.divider));
    recyclerView.addItemDecoration(dividerItemDecoration);
    

提交回复
热议问题