美文网首页
自定义RecyclerView的列表分割线 LinearLayo

自定义RecyclerView的列表分割线 LinearLayo

作者: cao苗子 | 来源:发表于2019-08-16 15:20 被阅读0次

直接上代码

/**
 * ListView样式的分割线
 */
public class LinearLayoutItemDecoration extends RecyclerView.ItemDecoration{
    private Drawable mDivide;
    public LinearLayoutItemDecoration(Context context,int drawableResourceId){
        // 获取 Drawable
        mDivide = ContextCompat.getDrawable(context,drawableResourceId);
    }
    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        //在头部添加一个 10px 的空间 除了第一个
        int position = parent.getChildAdapterPosition(view);
        if(position !=0 ){
            outRect.top = mDivide.getIntrinsicHeight();
        }
    }

    /**
     * 绘制分割线
     * @param c
     * @param parent
     * @param state
     */
    @Override
    public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        int childCount = parent.getChildCount();
        Rect rect = new Rect();
        rect.left = parent.getPaddingLeft();
        rect.right = parent.getWidth() - parent.getPaddingRight();
        for(int i=1;i<childCount;i++){
            //分割线的底部 是item的头部
            rect.bottom = parent.getChildAt(i).getTop();
            rect.top = rect.bottom - 10;
            mDivide.setBounds(rect);
            mDivide.draw(c);
        }
    }
}

相关文章

网友评论

      本文标题:自定义RecyclerView的列表分割线 LinearLayo

      本文链接:https://www.haomeiwen.com/subject/ufqqsctx.html