読者です 読者をやめる 読者になる 読者になる

【Android】OnGlobalLayoutListener

Android

Viewの幅や高さが取得できるようになるまで待つ場合、OnGlobalLayoutListenerを使用します。

_listener = new ViewTreeObserver.OnGlobalLayoutListener(){
    @Override
    public void onGlobalLayout() {
        ViewTreeObserver observer = view.getViewTreeObserver();
        if(null != observer){
            if(Build.VERSION.SDK_INT >= 16) {
                observer.removeOnGlobalLayoutListener(_listener);
            }
            else{
                observer.removeGlobalOnLayoutListener(_listener);
            }
        }

        //処理
    }
};

view.getViewTreeObserver().addOnGlobalLayoutListener(_listener);

特にGoogleMap v2でCameraUpdateFactory.newLatLngBoundsを使用する前に 幅や高さが取得できるようになっていないとクラッシュしてしまうため重宝します。