LineGridView

出自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1227/1582.html

  1. public class LineGridView extends GridView{
  2. public LineGridView(Context context) {
  3. super(context);
  4. // TODO Auto-generated constructor stub
  5. }
  6. public LineGridView(Context context, AttributeSet attrs) {
  7. super(context, attrs);
  8. }
  9. public LineGridView(Context context, AttributeSet attrs, int defStyle) {
  10. super(context, attrs, defStyle);
  11. }
  12. @Override
  13. protected void dispatchDraw(Canvas canvas){
  14. super.dispatchDraw(canvas);
  15. View localView1 = getChildAt(0);
  16. int column = getWidth() / localView1.getWidth();
  17. int childCount = getChildCount();
  18. Paint localPaint;
  19. localPaint = new Paint();
  20. localPaint.setStyle(Paint.Style.STROKE);
  21. localPaint.setColor(getContext().getResources().getColor(R.color.grid_line));
  22. for(int i = 0;i < childCount;i++){
  23. View cellView = getChildAt(i);
  24. if((i + 1) % column == 0){
  25. canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
  26. }else if((i + 1) > (childCount - (childCount % column))){
  27. canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
  28. }else{
  29. canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
  30. canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
  31. }
  32. }
  33. if(childCount % column != 0){
  34. for(int j = 0 ;j < (column-childCount % column) ; j++){
  35. View lastView = getChildAt(childCount - 1);
  36. canvas.drawLine(lastView.getRight() + lastView.getWidth() * j, lastView.getTop(), lastView.getRight() + lastView.getWidth()* j, lastView.getBottom(), localPaint);
  37. }
  38. }
  39. }
  40. }

你可能感兴趣的:(android)