ViewPager自适应

自定义ViewPager ,根据viewpager滑动得到position的位置 去变化每个itemview高度

public class MyViewPager extends ViewPager {
    private int position;

    public MyViewPager(Context context) {
        super(context);
    }

    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int height = 0;
        View child = getChildAt(position);
        if (child == null) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            return;
        }
        child.measure(widthMeasureSpec,
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int h = child.getMeasuredHeight();
        if (h > height) //采用最大的view的高度。
            height = h;
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height,
                MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    public void measurePositionFragment(int postion) {
        this.position = postion;
        requestLayout();
    }
}

在Viewpager 调用setAdapter以后 还要调用一下这个方法,

mViewpager.post(new Runnable() {
                        @Override
                        public void run() {
                            mViewpager.requestLayout();
                        }
                    });

设置ViewPager的回调方法,每次切换 及调用measurePositionFragment()方法,去重新测量

mViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                        @Override
                        public void onPageScrolled(int i, float v, int i1) {
                            
                        }

                        @Override
                        public void onPageSelected(int i) {
                            mViewpager.measurePositionFragment(i);
                        }

                        @Override
                        public void onPageScrollStateChanged(int i) {

                        }
                    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,388评论 25 708
  • 一、适用场景 ListViewListview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用...
    Geeks_Liu阅读 10,756评论 1 28
  • 1. 在本类中使用,并没有意义。可以通过函数实现这个过程 2. 可以保存代码,存入模型中.需要使用时通过模型调用 ...
    _常小仙儿阅读 1,039评论 4 15
  • 顶着耀眼的阳光,我在街头奔跑着 你像平时一样地拍打我的肩头 不知从何时开始,我毫无理由地迷恋上你 你却从来不曾挽上...
    拥人自扰之阅读 296评论 0 0
  • 我发现我的视觉变的更开阔 听觉变的更仔细 听觉变的更灵敏 我感受到我自己的蜕变了 一个新的自己正在诞生 摆脱原有的...
    梁运生阅读 194评论 0 0