Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态设置ViewPager高度_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Android 动态设置ViewPager高度

Android 动态设置ViewPager高度,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我正在尝试放置一个具有不同高度的不同片段的ViewPager。我知道wrap_content无法与ViewPager一起使用,因此我尝试以友好方式设置寻呼机高度。 我正在页面侦听器中设置寻呼机高度: ... indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int selected)

我正在尝试放置一个具有不同高度的不同片段的
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()));

                }

            }

不幸的是,它不起作用,因为
Fragment
上的
getmeasuredhight()
返回的值是错误的。我做错了什么?

尝试在viewpager的onLayout()中设置其参数

这是我的解决方案:

    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);
                }
            });

我把它称为onResume()

那么,您是否建议扩展viewPager?问题是寻呼机应该具有显示片段的高度,所以我不明白如何在onLayout()中解决这个问题。但是没有调用OnGlobalYoutListener。为什么?你确定吗?你有没有记录下来并确认没有?特色图片的比例是多少??我正试图在一个残缺的页面上使用它,我的ViewPager只显示图像。我预先知道图像比率,所以特征图像比率只是一个常量,用于计算ViewPager的高度。@czaku我有一个类似的问题,但有点不同,请从