設(shè)置viewPager的高度為自適應(yīng)

最近項(xiàng)目中需要Viewpager的高度能夠自適應(yīng)的動(dòng)態(tài)改變,如果直接設(shè)置viewpager的高度為Android:layout_height="wrap_content",并不起作用,viewpager會(huì)鋪滿父布局,通過(guò)閱讀viewpager的源碼,發(fā)現(xiàn)創(chuàng)建一個(gè)viewpager的子類并重寫onMeasure可實(shí)現(xiàn)這個(gè)需求,代碼如下:

public class WrapContentHeightViewPager extends ViewPager {  
    public WrapContentHeightViewPager(Context context) {  
        super(context);  
    }  
  
    public WrapContentHeightViewPager(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    @Override  
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);  
        int childSize = getChildCount();  
        int maxHeight = 0;  
        for (int i = 0; i < childSize; i++) {  
            View child = getChildAt(i);  
            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));  
            if (child.getMeasuredHeight() > maxHeight) {  
                maxHeight = child.getMeasuredHeight();  
            }  
        }  
  
        if (maxHeight > 0) {  
            setMeasuredDimension(getMeasuredWidth(), maxHeight);  
        }  
  
    }  
}  

思路很簡(jiǎn)單,遍歷viewpager的每個(gè)childView,找出高度最大的那個(gè)childView的高度,并把這個(gè)高度設(shè)置為viewpager的高度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容