2010年1月7日木曜日

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

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


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

int width = findViewById(R.id.button1).getWidth();
}


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

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


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


これでOK。

3 件のコメント:

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

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

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

    返信削除