Dynamically set ViewPager height

android, android-fragments, android-viewpager

Solution

This is my solution:

    ViewTreeObserver viewTreeObserver = mViewPager.getViewTreeObserver();
    viewTreeObserver
            .addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

                @Override
                public void onGlobalLayout() {

                    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT);

                    int viewPagerWidth = mViewPager.getWidth();
                    float viewPagerHeight = (float) (viewPagerWidth * FEATURED_IMAGE_RATIO);

                    layoutParams.width = viewPagerWidth;
                    layoutParams.height = (int) viewPagerHeight;

                    mViewPager.setLayoutParams(layoutParams);
                    mViewPager.getViewTreeObserver()
                            .removeGlobalOnLayoutListener(this);
                }
            });

I call it in onResume();

Problem

I am trying to put a `ViewPager` with different fragments with different heights. I know that `wrap_content` is not working with `ViewPager` so I am trying to set pager height dinamically. I am setting the pager height in a page listener: ``` ... indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int selected) { final View view = fragments[selected].getView(); if (view != null) { pager.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, view .getMeasuredHeight())); } } ``` Unfortunately it is not working because the value returned by `getMeasuredHeight()` on `Fragment` is wrong. What am I doing wrong?

Original source