diff --git a/library/src/main/java/com/daimajia/numberprogressbar/NumberProgressBar.java b/library/src/main/java/com/daimajia/numberprogressbar/NumberProgressBar.java index a48b425..48a1e43 100644 --- a/library/src/main/java/com/daimajia/numberprogressbar/NumberProgressBar.java +++ b/library/src/main/java/com/daimajia/numberprogressbar/NumberProgressBar.java @@ -66,6 +66,11 @@ public class NumberProgressBar extends View { */ private String mPrefix = ""; + /** + * The max drawTextWith + */ + private float mMaxDrawTextWidth; + private final int default_text_color = Color.rgb(66, 145, 241); private final int default_reached_color = Color.rgb(66, 145, 241); @@ -266,6 +271,8 @@ private void initializePainters() { mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mTextPaint.setColor(mTextColor); mTextPaint.setTextSize(mTextSize); + + mMaxDrawTextWidth = mTextPaint.measureText(mPrefix + "100" + mSuffix); } @@ -294,7 +301,8 @@ private void calculateDrawRectF() { mDrawReachedBar = true; mReachedRectF.left = getPaddingLeft(); mReachedRectF.top = getHeight() / 2.0f - mReachedBarHeight / 2.0f; - mReachedRectF.right = (getWidth() - getPaddingLeft() - getPaddingRight()) / (getMax() * 1.0f) * getProgress() - mOffset + getPaddingLeft(); + mReachedRectF.right = (getWidth() - getPaddingLeft() - getPaddingRight() - mDrawTextWidth) + / (getMax() * 1.0f) * getProgress() - mOffset + getPaddingLeft(); mReachedRectF.bottom = getHeight() / 2.0f + mReachedBarHeight / 2.0f; mDrawTextStart = (mReachedRectF.right + mOffset); } @@ -307,13 +315,13 @@ private void calculateDrawRectF() { } float unreachedBarStart = mDrawTextStart + mDrawTextWidth + mOffset; - if (unreachedBarStart >= getWidth() - getPaddingRight()) { + if (unreachedBarStart >= getWidth() - getPaddingRight() - mMaxDrawTextWidth) { mDrawUnreachedBar = false; } else { mDrawUnreachedBar = true; mUnreachedRectF.left = unreachedBarStart; - mUnreachedRectF.right = getWidth() - getPaddingRight(); - mUnreachedRectF.top = getHeight() / 2.0f + -mUnreachedBarHeight / 2.0f; + mUnreachedRectF.right = getWidth() - getPaddingRight() - mMaxDrawTextWidth; + mUnreachedRectF.top = getHeight() / 2.0f - mUnreachedBarHeight / 2.0f; mUnreachedRectF.bottom = getHeight() / 2.0f + mUnreachedBarHeight / 2.0f; } }