29

時である

View.onMeasure(int widthMeasureSpec, int heightMeasureSpec)

呼ばれた?onMeasureが呼び出された後にアクションを実行する必要があるアクティビティがあります。

私の質問は、ここに投稿された未回答の質問と同じです。ビューのドキュメントには、 requestLayout()が呼び出されたときに onMeasure が呼び出される記載されています。これは、ビューが現在の境界内に収まらないと判断したときに、それ自体のビューによって呼び出されたようです。

ただし、これは、アクティビティがいつビューが測定されたと想定できるかを教えてくれません。このコードを使用してImageViewを拡張し、TouchImageView を形成しました。ここで、 onMeasureメソッドを使用して画像をスケーリングする必要があることが提案されました。イメージがスケーリングされたパーセンテージを表示するために、 ImageViewが測定された後にTextViewの値を更新したいと考えています。

4

2 に答える 2

19

onMeasure は、親 View がレイアウトを計算する必要があるときに呼び出されます。通常、存在するさまざまな子とそのレイアウト パラメータに応じて、onMeasure が数回呼び出される場合があります。

onMeasureが呼び出されたときに何かを行う最善の方法は、(私が思うに) 独自のコントロールを作成し、ImageViewを拡張してonMeasure をオーバーライドすることです (super.onMeasure を呼び出して、他にやりたいことを実行するだけです)。

その場合、 on Measure はさまざまなパラメーターで何度も呼び出される可能性があることに注意してください。そのため、測定されたものは、実際に表示されるものの最終的な幅と高さではない可能性があります。

于 2011-07-08T22:19:04.523 に答える