Androidのブログラミンメモです。
アプリ起動時にViewのサイズを取得したかったので、onStartでなくonCreateでgetHeight()などすると、0が返って来るなど苦労したためメモっておきます。
大元はお馴染み、「stack overflow」で探した書き込みから。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main);
View targetVew = (VerticalView)findViewById(R.id.target_view);
targetView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//ここでサイズを取得する
int height = targetView.getHeight();
int width = targetView.getWidth();
// 一度だけ呼ばれるようにする
// APIレベル16で[removeGlobalOnLayoutListener]は廃止されているので注意
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
targetView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
targetView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
}
他に、View.postで取る方法もあった。