- public class MyViewPager extends ViewPager {
- public MyViewPager(Context context) {
- super(context);
- }
- /**
- * Constructor
- *
- * @param context the context
- * @param attrs the attribute set
- */
- public MyViewPager(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);
- }
- /**
- * Determines the height of this view
- *
- * @param measureSpec A measureSpec packed into an int
- * @param view the base view with already measured height
- *
- * @return The height of the view, honoring constraints from measureSpec
- */
- private int measureHeight(int measureSpec, View view) {
- int result = 0;
- int specMode = MeasureSpec.getMode(measureSpec);
- int specSize = MeasureSpec.getSize(measureSpec);
- if (specMode == MeasureSpec.EXACTLY) {
- result = specSize;
- } else {
- // set the height from the base view if available
- if (view != null) {
- result = view.getMeasuredHeight();
- }
- if (specMode == MeasureSpec.AT_MOST) {
- result = Math.min(result, specSize);
- }
- }
- return result;
- }
- }
参照:http://blog.youkuaiyun.com/lzq520210/article/details/53197535