From 042f71646b9ee8ca69a840cf70f84eb7f9cded91 Mon Sep 17 00:00:00 2001 From: mcbyte-it Date: Sun, 27 Apr 2014 14:01:13 +0200 Subject: [PATCH] workaround for measureText in kitkat multiply by 1000 to bypass the Math.ceil issue --- .../codeandmagic/android/gauge/GaugeView.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Library/src/org/codeandmagic/android/gauge/GaugeView.java b/Library/src/org/codeandmagic/android/gauge/GaugeView.java index 7740b98..c0a4135 100644 --- a/Library/src/org/codeandmagic/android/gauge/GaugeView.java +++ b/Library/src/org/codeandmagic/android/gauge/GaugeView.java @@ -652,8 +652,27 @@ private void drawFace(final Canvas canvas) { private void drawText(final Canvas canvas) { final String textValue = !TextUtils.isEmpty(mTextValue) ? mTextValue : valueString(mCurrentValue); - final float textValueWidth = mTextValuePaint.measureText(textValue); - final float textUnitWidth = !TextUtils.isEmpty(mTextUnit) ? mTextUnitPaint.measureText(mTextUnit) : 0; + float textValueWidth = mTextValuePaint.measureText(textValue); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + float tmpTextSize = mTextValuePaint.getTextSize(); + mTextValuePaint.setTextSize(tmpTextSize * 1000); + textValueWidth = mTextValuePaint.measureText(textValue); + mTextValuePaint.setTextSize(tmpTextSize); + textValueWidth = (float) (textValueWidth / 1000); + } + + float textUnitWidth = 0; + if (!TextUtils.isEmpty(mTextUnit)) { + textUnitWidth = mTextUnitPaint.measureText(mTextUnit); + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + float tmpTextSize = mTextUnitPaint.getTextSize(); + mTextUnitPaint.setTextSize(tmpTextSize * 1000); + textUnitWidth = mTextUnitPaint.measureText(mTextUnit); + mTextUnitPaint.setTextSize(tmpTextSize); + textUnitWidth = (float) (textUnitWidth / 1000); + } + } final float startX = CENTER - textUnitWidth / 2; final float startY = CENTER + 0.1f;