Earth_Programer
Earth_Programer
2016-08-22 02:30
采纳率: 66.7%
浏览 2.0k
已采纳

ViewPager的子Pager高度自适应问题。

我的ViewPager一共有7个子页面,第一个内容最多,高度比较高,可以自适应。后面6个内容差不多,高度应该是一致的。
现在问题是,我1、3、4、5、6、7这6个页面都可以自适应高度,但是第个页面不能自适应,下方有很大一块空白。
我的ViewPager是自定义重写了OnMeasure方法。具体如下。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int height = 0;
        for(int i = 0; i < getChildCount(); i++) {
            View child = getChildAt(i);
            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            int h = child.getMeasuredHeight();
            if(h > height) height = h;
        }

        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

不知道有没有比较好的方法可以解决这个问题,有遇到过的,请不吝赐教!

当前项目布局 : 外面一个PullToRefreshScrollView,里面嵌套一个ViewPager

当前项目问题 : 自定义ViewPager的onMeasure方法后如上所述。

希望:有遇到过该问题的前辈可以分享下处理方案,或者推荐可以替代PullToRefreshScrollView去兼容里面的ViewPager的组件或者替代ViewPager
去兼容PullToRefreshScrollView的组件都可以。
有详细推荐、解说的。能解决我当前问题的,就可以。

PS:问一下在哪里可以追加悬赏。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • qq_34972666
    qq_34972666 2016-08-31 07:42
    已采纳

    我写个博客后给你发链接吧

    点赞 评论
  • bdmh
    bdmh 2016-08-22 02:32

    不能同时适应多个子视图高度,除非你每次切换,都重新measure,那样会引起页面抖动

    点赞 评论
  • chencaishengsic
    chencaishengsic 2016-08-23 03:38

    viewPager.setOffscreenPageLimit(1); 设置默认只初始化一个页面,其他页面就点击的时候才会初始化。

    点赞 评论
  • liuxian13183
    刘兆贤 2016-08-24 03:04

    同问,这是个没有解决的问题,最终让前端写了一个H5搞定的,像前面的仁兄说的一样,每切换到一个tab需要重新measure和layout,比较麻烦。

    点赞 评论
  • qq_34972666
    qq_34972666 2016-08-29 07:17

    在网上查到一个自适应子布局的方法,在自定义viewpager里写一个重置viewpager高度的方法

    点赞 评论

相关推荐