facebook twitter youtube
Salesforce Java Android PHP JavaScript MySQL Perl node.js HTML iOS
in Android - 19 3月, 2016
by sato - no comments
カスタムViewでonDraw()が呼ばれない

最近カスタムViewを作った時にonDraw()が呼び出されずハマったのでメモ。

カスタムViewでonDrawをオーバーライドしてCanvasに書き込みをしようと思い処理を作った所何故かonDrawが呼ばれない…
調べてみるとView.setWillNotDraw()でtrueが設定されているとonDraw()が呼ばれないとのこと。
試しにコンストラクタでsetWillNotDraw()にfalseを設定したところ期待した動作をするようになった。

おそらく不要なクラスではonDraw()を呼び出さず処理を軽くする意図があるのだと思うが、なかなかsetWillNotDraw()に気付けず結構な時間を使ってしまった。
普段は継承して使わないRelativeLayoutをカスタムViewにしたのが敗因のような気がする…