首先說明,我只是轉載,但是我覺得這是個大坑,有必要跟大家分享一下:
這裏的解決辦法也很簡單,自定義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);
}
}