2011-07-26 11 views
1

私はLinearLayout(ViewGroup)を持っています。私のコードでは、LinearLayoutに子ビュー(別の線形レイアウト)を追加しました。私の質問は、LinearLayoutのgetHeight()がSAME値を返す理由です。電話では、私の子供の線形レイアウトが表示され、正しく表示されています。しかし、なぜgetHeight()が私に正しい値を返さないのですか?ViewGroupのgetHeight()が変更されない理由

そしてViewGroupのadd()のソースコードを見てきました。それは 'requestLayout()'を呼び出すので、ViewGroupのgetHeight()が正しく更新されると思います。私は正しいですか?

+0

もう少し詳しい情報を提供できますか?あなたの外側のLinearLayoutの高さ= fill_parentまたはwrap_contentですか、それともハードコードされていますか?あなたの内部のレイアウトは空ですか? –

+0

私はあなたが子供の描画の後に少し時間を待つ必要があると思うし、高さを取得しようとすると、私はそれを試してみて違いを参照してください:) – Houcine

答えて

4

getHeight()はすぐに更新されません。requestLayout()は後で発生するレイアウトパスを要求します(非同期です)。 Layotuの通過後に高さを取得するには、UIイベントキューにイベントをポストする必要があります。

requestLayout(); 
post(new Runnable() { 
    public void run() { 
    // getHeight 
    } 
}); 
関連する問題