リア充爆発日記

You don't even know what ria-ju really is.

Fragment内のViewのwidthがなぜか0のときの対応方法

ViewTreeObserverを使ってOnGlobalLayoutListenerで引っ掛ける。

   @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        ViewTreeObserver observer = mImageView.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                    setImage();
            }
        });
    }

    private void setImage() {
        Bitmap bitmap;
        try {
            File file = new File(mPhoto.getImagePath());
            Uri uri = Uri.fromFile(file);
            bitmap = FileManager.decodeUri(getActivity().getContentResolver(), uri, mImageView.getWidth());
            mImageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }

OnGlobalLayoutListenerが引っかかり過ぎやしないかと思ったけど、アプリ起動→表示までの単純なフローでは2回しか呼ばれなかった。