想必大家以前也遇到过这个问题:出于项目的需要,我们有时需要新建一个直接或者间接继承View的类,以便复写View提供的onDraw()方法,但有时我们反而得不到我们想要的结果,今天就说一下onDraw()方法不被执行的解决方法。你可能也在onDraw()方法里面设置了断点或log,却发现程序并没有执行onDraw()方法,那么你需要在你直接或者间接继承View的类的构造函数中加入下面的语句:        setWillNotDraw(false);

  public FourceLinearLayoutWhite(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
  this.context=context;
  init();

        setWillNotDraw(false);

  }

 

  其实从这条语句的字面意思上可以看出:setWillNotDraw(false);就是设置将不绘画吗?你重写了onDraw()当然是要进行绘画了,所以应将此语句参数置为false.

 

  主要原因还是继承了 LinearLayout  默认是不进行调用 ondraw方法的 这里自己开启 调用ondraw 方法 

posted on 2015-08-13 11:21  青年程序猿  阅读(744)  评论(0)    收藏  举报