ViewPager的高度包裹 , 页卡问题

通过百度 , 网上解决ViewPager高度包裹的问题 , 主要重写onMeasure()的方法.因为项目需求 , 不同页卡的高度是不一样的 , 我的解决办法是 , 只计算第一页的高度 , 后面的页卡 , 都按照第一页的高度.

但是 , 同时也出现了问题 , ViewPager的页卡是有缓存的 , 默认是1的邻居单位 , 但是页卡数量多了 , 高度计算就会出问题.

尝试过把高度的int值 , 改成员变量 , 结果还是不行.

我最后的办法是增加ViewPager的缓存数量 , 原来的1 , 改成2 , 一般是够用了 , 不然 , 高度变化太多的ViewPager , 也不科学吧.


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


// 下面遍历所有child的高度
// 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) // 采用最大的view的高度。
// height = h;
// }


height = 0;
int count = getChildCount();
if (count > 0) {
View child = getChildAt(0);
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
height = child.getMeasuredHeight();
}


heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}



最后设置一下缓存数量

mPager.setOffscreenPageLimit(3);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值