RecyclerView 底部下划线

  public class DividerItemDecoration extends RecyclerView.ItemDecoration {  
        private static final int[] ATTRS = new int[]{  
                android.R.attr.listDivider  
        };  
        public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;  
        public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;  
        private Drawable mDivider;  
        private int mOrientation;  
        public DividerItemDecoration(Context context, int orientation) {  
            final TypedArray a = context.obtainStyledAttributes(ATTRS);  
            mDivider = a.getDrawable(0);  
            a.recycle();  
            setOrientation(orientation);  
        }  
        public void setOrientation(int orientation) {  
            if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {  
                throw new IllegalArgumentException("invalid orientation");  
            }  
            mOrientation = orientation;  
        }  
        @Override  
        public void onDraw(Canvas c, RecyclerView parent) {  
            if (mOrientation == VERTICAL_LIST) {  
                drawVertical(c, parent);  
            } else {  
                drawHorizontal(c, parent);  
            }  
        }  
        public void drawVertical(Canvas c, RecyclerView parent) {  
            final int left = parent.getPaddingLeft();  
            final int right = parent.getWidth() - parent.getPaddingRight();  
            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 top = child.getBottom() + params.bottomMargin +  
                        Math.round(ViewCompat.getTranslationY(child));  
                final int bottom = top + mDivider.getIntrinsicHeight();  
                mDivider.setBounds(left, top, right, bottom);  
                mDivider.draw(c);  
            }  
        }  
        public void drawHorizontal(Canvas c, RecyclerView parent) {  
            final int top = parent.getPaddingTop();  
            final int bottom = parent.getHeight() - parent.getPaddingBottom();  
            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 +  
                        Math.round(ViewCompat.getTranslationX(child));  
                final int right = left + mDivider.getIntrinsicHeight();  
                mDivider.setBounds(left, top, right, bottom);  
                mDivider.draw(c);  
            }  
        }  
        @Override  
        public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {  
            if (mOrientation == VERTICAL_LIST) {  
                outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());  
            } else {  
                outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);  
            }  
        }  

    }  


//调用

  contactList.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST)); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值