カスタムViewでonDraw()が呼ばれない
最近カスタムViewを作った時にonDraw()が呼び出されずハマったのでメモ。
カスタムViewでonDrawをオーバーライドしてCanvasに書き込みをしようと思い処理を作った所何故かonDrawが呼ばれない…
調べてみるとView.setWillNotDraw()でtrueが設定されているとonDraw()が呼ばれないとのこと。
試しにコンストラクタでsetWillNotDraw()にfalseを設定したところ期待した動作をするようになった。
おそらく不要なクラスではonDraw()を呼び出さず処理を軽くする意図があるのだと思うが、なかなかsetWillNotDraw()に気付けず結構な時間を使ってしまった。
普段は継承して使わないRelativeLayoutをカスタムViewにしたのが敗因のような気がする…