设置viewpager高度为wrap_content时并没有起作用。
解决办法:自定义viewpager,重写onMeasure方法
public class MyViewPager extends ViewPager {
public MyViewPager(@NonNull Context context) {
super(context);
}
public MyViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
// 解决ViewPager设置高度wrap_contant无效的方法
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = 0;
for (int i = 0; i < getChildCount(); i++) {
View childView = getChildAt(i);
ViewGroup.LayoutParams params = childView.getLayoutParams();
childView.measure(widthMeasureSpec,
getChildMeasureSpec(heightMeasureSpec,0,params.height));
int h = childView.getMeasuredHeight();
if (h > height) // 采用最大的view的高度
height = h;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
在对于的适配器里初始化页面xml时,inflate选择
LayoutInflater.from(mContext).inflate(R.layout.linear_item, container, false);
关键是后两位参数container, false。
最后就能达到你想要的效果了!
觉得有帮助的给小博主点个关注吧。