From 549482bfcb00186d3f49e61eca4b60283e3b401b Mon Sep 17 00:00:00 2001 From: Andrei Stingaceanu Date: Wed, 5 Apr 2017 16:51:00 +0100 Subject: [PATCH] AutoSize TextView - fix measurements The BoringLayout measurements for auto-size are incorrect. Removed those and kept the StaticLayout measurements. Bug: 36940118 Test: cts-tradefed run cts-dev -m CtsWidgetTestCases -t\ android.widget.cts.TextViewTest Change-Id: I772ade08ed26efac05ca56cb7df8cfec0327633b --- core/java/android/widget/TextView.java | 44 +++++++++++--------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 58da92f6bd19e..fcab7035e60fc 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8148,35 +8148,29 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mTempTextPaint.set(getPaint()); mTempTextPaint.setTextSize(suggestedSizeInPx); - if ((mLayout instanceof BoringLayout) && BoringLayout.isBoring( - text, mTempTextPaint, getTextDirectionHeuristic(), mBoring) != null) { - return mTempTextPaint.getFontSpacing() <= availableSpace.bottom - && mTempTextPaint.measureText(text, 0, text.length()) <= availableSpace.right; - } else { - final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain( - text, 0, text.length(), mTempTextPaint, - getMeasuredWidth() - getTotalPaddingLeft() - getTotalPaddingRight()); + final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain( + text, 0, text.length(), mTempTextPaint, + getMeasuredWidth() - getTotalPaddingLeft() - getTotalPaddingRight()); - layoutBuilder.setAlignment(getLayoutAlignment()) - .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) - .setIncludePad(getIncludeFontPadding()) - .setBreakStrategy(getBreakStrategy()) - .setHyphenationFrequency(getHyphenationFrequency()) - .setJustificationMode(getJustificationMode()) - .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) - .setTextDirection(getTextDirectionHeuristic()); + layoutBuilder.setAlignment(getLayoutAlignment()) + .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) + .setIncludePad(getIncludeFontPadding()) + .setBreakStrategy(getBreakStrategy()) + .setHyphenationFrequency(getHyphenationFrequency()) + .setJustificationMode(getJustificationMode()) + .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) + .setTextDirection(getTextDirectionHeuristic()); - final StaticLayout layout = layoutBuilder.build(); + final StaticLayout layout = layoutBuilder.build(); - // Lines overflow. - if (maxLines != -1 && layout.getLineCount() > maxLines) { - return false; - } + // Lines overflow. + if (maxLines != -1 && layout.getLineCount() > maxLines) { + return false; + } - // Height overflow. - if (layout.getHeight() > availableSpace.bottom) { - return false; - } + // Height overflow. + if (layout.getHeight() > availableSpace.bottom) { + return false; } return true;