mMenuView.setCutLineLeftPadding(30); mMenuView.setCutLineRightPadding(30); mMenuView.setGapLineColor(getResources().getColor(R.color.theme_bg)); MenuBean h=new MenuBean(); //或者直接指定rootView h.type=R.layout.head_user; h.menu="美其名曰美"; h.info="天道有常,不为尧存,不为桀亡。"; mMenuView.addMenu(5,h); mMenuView.addGap(30); addMenu(11,R.mipmap.ic1,"菜单一","新年新气象",true); addMenu(12,R.mipmap.ic2,"菜单二","",false); addMenu(13,R.mipmap.ic3,"菜单三","发现更好的自己",false); mMenuView.addGap(30); addMenu(14,R.mipmap.ic4,"菜单四","",true); addMenu(15,R.mipmap.ic5,"菜单五","",true); mMenuView.addGap(30); addMenu(16,R.mipmap.ic6,"菜单六","",true); addMenu(17,R.mipmap.ic7,"菜单七","",false); addMenu(18,R.mipmap.ic8,"菜单八","开心才是最重要的",true);
class MenuDecoration extends RecyclerView.ItemDecoration{
//onDraw在每次重绘时都会调用,比如滑动RecyclerView
//gap线为从左到右的完整线条,在最开始的item上,最后的item下,或者空白区域的上下
//cut线为两个紧密挨着的两个item之间的线条
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
//当第一个Item可见的时候,给第一个Item顶上绘一条Gap线
//不用完整可见才绘制,考虑设置paddingTop+clipPadding=false的情况
if(mLayout.findFirstVisibleItemPosition()==0){
int bottom=parent.getChildAt(0).getTop();
paint.setColor(gapLineColor);
c.drawLine(parent.getLeft(),bottom-halfLineHeight,parent.getRight(),bottom-halfLineHeight,paint);
}
int count=parent.getChildCount();
int gap;
int end=mData.size()-1;
//所有可见的Item下面画线
for (int i=0;i<count;i++){
final View child = parent.getChildAt(i);
int position=mLayout.getPosition(child);
gap=mGap.get(position);
float startY=child.getBottom()+halfLineHeight;
//View下面不存在gap且不是最好一个Item的时候,绘制Cut线,否则绘制gap线
if(gap==0&&position!=end){
//绘制cut线的左边线条
if(leftPaddingLine!=0){
paint.setColor(foreLineColor);
c.drawLine(parent.getLeft(),startY,parent.getLeft()+leftPaddingLine,startY,paint);
}
//绘制cut线的右边线条
if(rightPaddingLine!=0){
paint.setColor(foreLineColor);
c.drawLine(parent.getRight()-rightPaddingLine,startY,parent.getRight(),startY,paint);
}
//绘制cut线的中间线条
paint.setColor(cutLineColor);
c.drawLine(parent.getLeft()+leftPaddingLine,startY,parent.getRight()-rightPaddingLine,startY,paint);
}else{
paint.setColor(gapLineColor);
//绘制gap上面的一条线
c.drawLine(parent.getLeft(),child.getBottom()+halfLineHeight,parent.getRight(),child.getBottom()+halfLineHeight,paint);
//如果不是最后一个item,绘制gap下面的一条线
if(position<end){
c.drawLine(parent.getLeft(),child.getBottom()+gap+halfLineHeight,parent.getRight(),child.getBottom()+gap+halfLineHeight,paint);
}
}
}
}
//在每个item加载时调用,用来判断设置每个item上下左边的空白区域,设置内容分别设置到outRect中
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
int position=mLayout.getPosition(view);
//如果是第一个Item,则设置上线条高度,否则不设置上线条高度
//为每个item设置下边线条+gap(如果有的话,没有就为0)的高度
//四个参数分别为左边空白区域,上方空白区域,右边空白区域,下方空白区域
outRect.set(0, position != 0 ? 0 : (int)(halfLineHeight * 2+0.5f),0,(int)(halfLineHeight*2+0.5f)+mGap.get(position));
}
}
public void addGap(int height){
mGap.put(mData.size()-1,height);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有