2011-07-15 11 views
-2

アクティビティが読み込まれた後に、アプリのフォーマットにいくつかの画像が表示されます。問題は、内部にonCreate()onResume()のメソッド私のImageViewが幅と高さ= 0を持っている間です。ビューのサイズを変更した後にコードを実行するにはどうすればよいですか? (アンドロイドでAndroidでアクティビティが読み込まれた後でコードを実行します。

+2

私はあなたの問題はライン15であると思いますが、あなたは'を追加する必要があります。または、頬の舌の量が少なくて:動作しないコードを投稿することができます(何がうまくいかないかを示す最小限の例)。そして、あなたが望むもの、入手するものなどを教えてください。 – Nanne

+0

いけないと私は説明するためのコードを必要と思うfill_parentの高さと幅を持つ画像ビューは、高さ= 0と幅= 0のアクティビティがロードされ、アイテムが実際のサイズを取るときにコードを実行したい.. – ChyBy

+1

私はそれを考えた私はコメントを追加しました。最初に同意したら、コードを投稿したと思いますよね?右。それはあなたにとっては明らかかもしれませんが、何が起こっているのかについての素早い洞察がないので、助けられないでしょう(そして、そうではありません)。それについて考えてみましょう。どのような見方ですか?それは設定されていますか?どのように設定されていますか?サイズはどうあるべきですか?あなたがそれを求める時のサイズについて確かめることができますか?画像はコードで設定されていますか?いつ? – Nanne

答えて

3

ビューは、ブラックベリーやiPhoneのようにサイズ/位置を固定されていません=私はonPostResume()をテストしたが、それはいけない仕事、レイアウトはずっと後onCreate/onResumeより起こる代わりに、彼らは、動的にレイアウトされており、理論的に多く起こることができます。ビューのサイズは0で、位置は0です(気づいたように)。

メソッドが返された後、ビューのサイズと位置がわかります。

onCreate/onResumeでImageViewのサイズを取得しようとするのは意味がありません。なぜならonLayoutはまだそのpで呼び出されていないからです汚れ

代わりに、このようなonLayoutをオーバーライドして、そこに自分のものを実行します; `

public class MyImageView extends ImageView { 
    @Override 
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
     super.onLayout(changed, left, top, right, bottom); 
     // at this point size and position are known 
     int h = getHeight(); 
     int w = getWidth(); 
     doSomethingCool(h,w); 
    } 
} 
+0

あなたの答え=ありがとう – ChyBy

関連する問題