From f730651a22c8d057dd5a39e3a846b699e2f4d73f Mon Sep 17 00:00:00 2001 From: Andrei Stingaceanu Date: Wed, 12 Apr 2017 15:57:38 +0100 Subject: AutoSize TextView - take horizontalScrolling into account When passing the characteristics of the current TextView to the StaticLayout for auto-size measurements also take the horizontallyScrolling into account similarly with how the actual measurements are done (@ TextView#onMeasure). Bug: 37254477 Test: cts-tradefed run cts-dev -m CtsWidgetTestCases -t\ android.widget.cts.TextViewTest Change-Id: I44b85e77d9b1770f188a0f59f103e3fda284e97a --- core/java/android/widget/TextView.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index f9f10af85b69..f1a3ff54ed80 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8196,9 +8196,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mTempTextPaint.set(getPaint()); mTempTextPaint.setTextSize(suggestedSizeInPx); + final int availableWidth = mHorizontallyScrolling + ? VERY_WIDE + : getMeasuredWidth() - getTotalPaddingLeft() - getTotalPaddingRight(); final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain( - text, 0, text.length(), mTempTextPaint, - getMeasuredWidth() - getTotalPaddingLeft() - getTotalPaddingRight()); + text, 0, text.length(), mTempTextPaint, availableWidth); layoutBuilder.setAlignment(getLayoutAlignment()) .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) -- cgit v1.2.3-59-g8ed1b