2010年1月7日木曜日

Android Viewのサイズを取得する。

Button や EditText (もちろん LinearLayout なども)
といった View のサイズを onCreate() のなかで取得しようと
しても 0 になってしまいます。

  1. @Override  
  2. public void onCreate(Bundle savedInstanceState) {  
  3.    super.onCreate(savedInstanceState);  
  4.    setContentView(R.layout.main);  
  5.   
  6.    int width = findViewById(R.id.button1).getWidth();  
  7. }  


これだと width には 0 が入ってしまいます。

onCreate() ではなく onWindowFocusChanged() のなかで
取得すれば 0 にならないで、実際の値が得られます。

  1. @Override  
  2. public void onWindowFocusChanged(boolean hasFocus) {  
  3.   super.onWindowFocusChanged(hasFocus);  
  4.   int width = findViewById(R.id.button1).getWidth();  
  5. }  


これでOK。

3 件のコメント:

  1. ありがとう!
    勉強になった。

    返信削除
  2. これを解決するのに、1日費やしてしまいました(泣)

    返信削除
  3. ありがとうございます!

    返信削除