2011-06-01 4 views
0

私はアンドロイドでどのようにビューが描画されているかを調べていました。開発者サイトで提供されているドキュメントを読んでいました。アンドロイドの衝突でdraw()とmeasure()メソッドを実行しますか?

が質問

ビューが自身を描いているとき、それは最初に自身とそのすべての子に対策を呼び出します...ここでそれは意志のためのコンテキストを設定する:私は、次の質問を除き、そのほとんどを理解しました両親によって強制された者に基づいてその子供に強制的な制約を与える。

質問

は今、私はラベル..を描いていますし、何らかの理由でその親によってそれの上に置かれた制約が唯一それが60PX X 60PX空間に描くことを可能にすることを検討してください。私はこのラベルを作った、それはカスタムビューであることを意味する。今私は描画メソッドのコードを書いています。ここで私は5文字を持つテキスト上にテキストを描画しています。テキストのサイズは20です。ここでテキストを描画するには合計で100pxが必要ですが、60pxの幅しか描画できません。 should測定メソッドは返す前に描画メソッドを考慮しませんか?

ありがとうございます。

答えて

0

ドロー方式はニーズを考慮していません。 OnMeasureはそれを行うものです。 onMeasureでは、あなたはあなたの希望のサイズを返します。これは、コンポーネントとその両親がサイズを交渉する場所です。もちろん、あなたはいつも不十分なスペースで終わることができます。しかしこれは他のすべてのコンポーネントにも当てはまります - TextView 5pxを使用すると5pxになります。 OnDrawはそれを行うことを意味します。サイズに関する計算はすべてonMeasureで既に行われているはずです。新しいAndroidのバージョンは、onMeasureで返された、View.MEASURED_STATE_TOO_SMALL(API> = 11)を持ち、空いていることを示します。

+0

ok。私はちょうど不思議だった。私の子供が何を求めているのかを知りたいのであれば、私はまず測定モードを取得し、それが何であるかを見なければなりません。 – user590849

+0

それはあなたに依存します - あなたはいつも子供のサイズに応じていくつかのサイズを強制することができます。またはあなたは子供のサイズで希望を得ることができますし、彼らの欲求の割合を実施することが良いではない場合。 – Kamen

関連する問題