public class MyGridView extends GridView { public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } private int rownum; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int colnum = getNumColumns(); //获取列数 int total = getChildCount(); //获取Item总数 //计算行数 if (total % colnum == 0) { rownum = total / colnum; } else { rownum = (total / colnum) + 1; //当余数不为0时,要把结果加上1 } Paint localPaint; //设置画笔 localPaint = new Paint(); localPaint.setStyle(Paint.Style.STROKE); //画笔实心 localPaint.setColor(getContext().getResources().getColor(R.color.colorAccent));//画笔颜色 View view0 = getChildAt(0); //第一个view View viewColLast = getChildAt(colnum - 1);//第一行最后一个view View viewRowLast = getChildAt((rownum - 1) * colnum); //第一列最后一个view for (int i = 1, c = 1; i < rownum || c < colnum; i++, c++) { //画横线 canvas.drawLine(view0.getLeft(), view0.getBottom() * i, viewColLast.getRight(), viewColLast.getBottom() * i, localPaint); //画竖线 canvas.drawLine(view0.getRight() * c, view0.getTop(), viewRowLast.getRight() * c, viewRowLast.getBottom(), localPaint); } } }