1、高度问题的解决,可以通过获取其子控件的高度来动态设置,在自定义的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);
}
这样重写,就可以将viewpager的高度设置为其多个子控件的最大高度的子控件的高度。
2、防止与scrollview的冲突,可以通过重写 dispatchTouchEvent方法来解决
// 防止viewpager跟scrollview冲突
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
boolean ret = super.dispatchTouchEvent(ev);
if(ret)
{
requestDisallowInterceptTouchEvent(true);
}
return ret;
}
我在scrollview中嵌套了viewpager,通过上述方法,现在已经解决一些问题。