2011-01-17 12 views
2

レイアウトパスが完了したら通知を受け取るにはどうすればよいですか?どこかで実装または上書きすることができるonLayoutFinished()のようなものがありますか? ViewのJavadocからAndroidのレイアウト変更を聞きます

: 測定パスとレイアウトパス:

レイアウトは、二つのパスプロセスです。 測定パスは measure(int、int)で実装され、ビューツリーのトラバーサルであるトップダウン です。各ビュー は、再帰中にツリーの次元指定を にプッシュします。計量パスの最後の には、すべてのビュー に測定値が保存されています。 第2パスはレイアウト(int、 int、int、int)で発生し、トップダウンです。 このパスの間、各親は 小計の計算で計算されたサイズを使用して、 子どものすべての位置を決定します。

"第2パス"が完了した後にロジックを実行することをお勧めします。特に、ビューにいくつかの変更を加え、最初のビューのフレーム(位置とサイズ)に依存する別のビューに変更を加えたいとします。

答えて

3

onLayout()を単にオーバーライドして、super.onLayout()を呼び出した後に行う必要があることを実行できます。 onSizeChanged()をオーバーライドすることもできます。これは、レイアウトパスがViewの座標/サイズを変更した場合にのみ呼び出されます。

+0

私はonLayout()をオーバーライドしようとしましたが、期待どおりに動作しませんでした。プラットフォームが物事を行う方法と戦っているように感じたので、最終的には、最初のビューでレイアウトパスの結果を計算し、それに基づいて2番目のビューのレイアウトに変更を要求しました。ビューは、同じレイアウト・パス中に一緒に変更されます。 – hpique

関連する問題