【android】解决Viewpager设置高度为wrap_content无效的方法

来源:互联网 发布:浪潮数据库服务器 编辑:程序博客网 时间:2024/05/23 15:10

今天发现设置viewpager高度为wrap_content时并没作用,stackoverflow给出了解决方案,就是自定义viewpager,重写onMesure()方法:

public class WrapContentHeightViewPager extends ViewPager {    /**     * Constructor     *     * @param context the context     */    public WrapContentHeightViewPager(Context context) {        super(context);    }    /**     * Constructor     *     * @param context the context     * @param attrs the attribute set     */    public WrapContentHeightViewPager(Context context, AttributeSet attrs) {        super(context, attrs);    }    @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);    }}

使用的时候用WrapContentHeightViewPager代替viewpager就ok了

1 1