2016-10-21 11 views
0

私は別のクラスAnswerImageViewに拡張されています。このオブジェクトはプログラムによってコンテナビューに追加され、位置の初期化メソッドがonWindowFocusChanged()で呼び出されます。このメソッドは正しいマージンとレイアウトパラメータを設定し、可視性をオンにします。それから私はgetLeft()を呼んでAnswerの最初のX位置を得ようとします。 Answersクラスthis.getLeft()またはメインアクティビティanswer_object1.getLeft()から呼び出されても、それでも0が返されます。`getLeft()`は `onWindowFocusChanged()`でゼロを返します

なぜですか?

XML経由で画像ビューを追加し、onWindowFocusChanged()に 'getLeft()'を呼び出すと、正しい値が返されます。

答えて

2

getLeft()は、レイアウトステップが完了してAnsweronLayoutが呼び出された後にのみ実際の値を返します。したがって、ビューの最初の位置を記録するには、onLayoutの方が良いでしょう。

onWindowFocusChanged()については、このメソッドがonLayoutより前に呼び出されるかどうかについては約束がないため、ビューの最初の位置を記録するのに最適な場所ではありません。

関連する問題