动态设置ViewPager高度

Mat*_*ska 15 android android-fragments android-viewpager

我试图ViewPager用不同的高度放置不同的碎片.我知道这wrap_content不起作用ViewPager所以我试图设置寻呼机高度.我在页面侦听器中设置寻呼机高度:

...
        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()));

                }

            }
Run Code Online (Sandbox Code Playgroud)

不幸的是它没有用,因为getMeasuredHeight()on 返回的值Fragment是错误的.我究竟做错了什么?

cza*_*aku 19

这是我的解决方案:

    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);
                }
            });
Run Code Online (Sandbox Code Playgroud)

我在onResume()中调用它;

  • 什么是FEATURED_IMAGE_RATIO?我试图在fragmentpageradapter上使用它 (5认同)