最終更新:
moonlight_aska 2010年10月17日(日) 21:30:04履歴
ビュー(View)のサイズ(横幅, 縦の高さ)は, ビューがレイアウトされ, 見える状態になってからでないと取得できない.


ビューの横幅や縦の高さを取得するメソッドは, View#getWidthメソッド, getHeightメソッドであるが, Activity#onCreateメソッドで呼んでも正常な値が取得できない(値は0になる).
この段階では, まだビューが見える状態になっていないのが原因と思われる.
この段階では, まだビューが見える状態になっていないのが原因と思われる.
Activity#onWindowFocusChangedメソッドは, ビューが見える状態になってから呼ばれているようなので, ここで取得する.
- onWindowFocusChangedメソッドをオーバーライドする.
- findViewByIdメソッドで, サイズを取得したいビューのインスタンスを取得する.
- View#getWidthメソッド, getHeightメソッドでサイズを取得する.
package com.moonlight_aska.android.getviewsize01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class GetViewSize01 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Viewのサイズを取得 → 値の取得不可
TextView text = (TextView)findViewById(R.id.text_id);
Log.v("onCreate", "TextView width=" + text.getWidth() + ", height=" + text.getHeight());
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
// Viewのサイズを取得
TextView text = (TextView)findViewById(R.id.text_id);
Log.v("onWindowFocusChanged", "TextView width=" + text.getWidth() + ", height=" + text.getHeight());
}
}

このページへのコメント
助かりました。ありがとうございます。
大変参考になりました!ありがとう御座います。