diff options
| author | Andrei Stingaceanu <stg@google.com> | 2017-04-05 16:51:00 +0100 |
|---|---|---|
| committer | Andrei Stingaceanu <stg@google.com> | 2017-04-10 09:56:32 +0000 |
| commit | 549482bfcb00186d3f49e61eca4b60283e3b401b (patch) | |
| tree | ad2e325d06859ca4d5630328b5e264c8b82574a7 /core/java/android/widget/TextView.java | |
| parent | eca0d421d10e3cdaec150ef736a3fa3dad652bcb (diff) | |
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
Diffstat (limited to 'core/java/android/widget/TextView.java')
| -rw-r--r-- | core/java/android/widget/TextView.java | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 58da92f6bd19..fcab7035e60f 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()); - - 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(); - - // Lines overflow. - if (maxLines != -1 && layout.getLineCount() > maxLines) { - return false; - } + 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()); + + final StaticLayout layout = layoutBuilder.build(); + + // 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; |
