首先说明,我只是转载,但是我觉得这是个大坑,有必要跟大家分享一下:
这里的解决办法也很简单,自定义ViewPager:
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
public class MyViewPager extends ViewPager {
public MyViewPager(Context context)
{
this(context, null);
}
public MyViewPager(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
<span style="white-space:pre"> </span>int viewHeight = 0;
View childView = getChildAt(getCurrentItem());
if(childView != null) //有可能没有子view
{
<span style="white-space:pre"> </span> /**
<span style="white-space:pre"> </span>* UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;
<span style="white-space:pre"> </span>* EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;
<span style="white-space:pre"> </span>* AT_MOST(至多),子元素至多达到指定大小的值。
<span style="white-space:pre"> </span>*/
childView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));
viewHeight = childView.getMeasuredHeight(); //得到父元素对自身设定的高
heightMeasureSpec = MeasureSpec.makeMeasureSpec(viewHeight, MeasureSpec.EXACTLY);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}