2012-01-07 14 views

答えて

4

ビュー内でメソッドを作成して、変更を受け取り、ビューの内部から無効を呼び出す必要があります。

public void setTextSize (int size) { 
     mTextSize = size; 
     invalidate(); 
} 

私にとっては完璧に機能します。

0

View.invalidate()を呼び出す必要があります。ビューが表示され、測定された寸法を持つことを確認します。つまり、ビューgetMeasuerdWidth()およびgetMeasuerdHeight()が> 0を返すようにします。

ondrawメソッドの先頭にログメッセージを挿入して、動作することを確認します。間違いなくinvalidate()する必要があります。データが変更されていない可能性がありますか?

0

onDraw()メソッドの呼び出し結果を無効にします。

別のクラスからcustomViewClassName.invalidate()を呼び出すと、onDraw()メソッドが呼び出されます。

0

私はこのような仕組みを実現するためにメッセージハンドラを使用します。カスタムViewクラスでHandlerを作成し、このハンドラの参照をボタンに渡してから(たとえば、アクティビティのonCreateイベント)、sendMessage()/ handleMessage()メカニズムを使用してButtonと他のビュー。

この方法では、必要に応じて他のすべてのコンポーネントをカスタムビューとうまく組み合わせることもできます。

+0

カスタム表示からアクティビティクラスにどのようなメッセージを送信する必要がありますか?一見、無効化呼び出しやキャンバスを送信できないようです。 – user1134179

関連する問題