2012-04-25 7 views
0

私はそうのように、ViewGroupをオーバーライドすることによって複合ビューを書いている:測定値が設定された後Androidの複合ビューの初期化

public class CompositeView extends RelativeLayout 

は、私はいくつかのワンタイム初期化を実行する必要があります(つまり、onMeasureが呼び出されました)私は高さを知る必要があるので。

私はonAttachedToWindowをオーバーライドを考えていたが、ドキュメントはもちろんのこと:

それは最初onDrawの前にいつでも呼び出すことができ - onMeasure(int型、int型)の前または後を含みます。

その他のオプションはありますか?

おかげ

答えて

1

私は私のCustomViewsにonSizeChanged使用することを好む:レイアウト機能が終了した後

@Override 
protected void onSizeChanged(final int w, final int h, final int oldw, final int oldh) { 
    boolean changed = false; 
    changed |= w != oldw; 
    changed |= h != oldh; 
    changed &= w > 0; 
    changed &= h > 0; 
    if (changed) { 
      //do initialization stuff here 
      ... 

このメソッドは、一度呼び出されます。このquestionsにはいくつかの詳細があります。

+0

これは一度呼び出されることが保証されていますか? – Steve

+0

ビューのサイズが決定されると直ちに呼び出されます。私はそれを反映するために私のanserを編集 – Renard

+0

ありがとう。私はビット単位の演算子がブール値に適用できることは知らなかった。新しいことを学びました。 – Steve