Adsense_top

2016年7月30日土曜日

Androidメモ - 起動時、Viewのサイズを取得する

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で取る方法もあった。