From 3bceae364c96198ca6da165a4af066b483ca5f93 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Sat, 20 Jan 2018 20:03:39 +0100 Subject: [PATCH] Use measureText to get text width getTextBounds seems to return incorrect result, possibly due to rounding errors, and makes a small part of the text to the right disappear. --- .../openscale/gui/views/LinearGaugeView.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java index 18b563a7..2b06b8fe 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java @@ -98,17 +98,13 @@ public class LinearGaugeView extends View { return getWidth() / 100.0f * percent; } - private void drawCenteredText(Canvas canvas, String text, float centerX, float y, - Paint paint, Rect textBounds) { - float x = Math.max(0.0f, centerX - textBounds.width() / 2.0f); - x = Math.min(x, getWidth() - textBounds.width()); + private void drawCenteredText(Canvas canvas, String text, float centerX, float y, Paint paint) { + final float textWidth = paint.measureText(text); + float x = Math.max(0.0f, centerX - textWidth / 2.0f); + x = Math.min(x, getWidth() - textWidth); canvas.drawText(text, x, y, paint); } - private void drawCenteredText(Canvas canvas, String text, float centerX, float y, Paint paint) { - paint.getTextBounds(text, 0, text.length(), bounds); - drawCenteredText(canvas, text, centerX, y, paint, bounds); - } @Override protected void onDraw(Canvas canvas) { @@ -204,7 +200,7 @@ public class LinearGaugeView extends View { String valueStr = String.format("%.2f", value); indicatorPaint.getTextBounds(valueStr, 0, valueStr.length(), bounds); drawCenteredText(canvas, valueStr, valuePos, - indicatorBottom + bounds.height() + textOffset, indicatorPaint, bounds); + indicatorBottom + bounds.height() + textOffset, indicatorPaint); } @Override