@Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    if (mScrollView != null) {
      measureChild(
          mScrollView,
          MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.AT_MOST),
          MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.AT_MOST));

      mScrollContentHeight = mScrollView.getChildAt(0).getMeasuredHeight();
      mScrollViewHeight = mScrollView.getMeasuredHeight();
    }
    if (mBackground != null) {
      int minHeight = 0;
      minHeight =
          (int) (mScrollViewHeight + mParallaxOffset * (mScrollContentHeight - mScrollViewHeight));
      minHeight = Math.max(minHeight, MeasureSpec.getSize(heightMeasureSpec));

      measureChild(
          mBackground,
          MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY),
          MeasureSpec.makeMeasureSpec(minHeight, MeasureSpec.EXACTLY));

      mBackgroundRight = getLeft() + mBackground.getMeasuredWidth();
      mBackgroundBottom = getTop() + mBackground.getMeasuredHeight();

      mScrollDiff =
          (float) (mBackground.getMeasuredHeight() - mScrollViewHeight)
              / (float) (mScrollContentHeight - mScrollViewHeight);
    }
  }