OSDN Git Service

Set StaticLayout.maxLines only when ellipsize is set
authorSiyamed Sinir <siyamed@google.com>
Fri, 27 May 2016 01:25:26 +0000 (18:25 -0700)
committerSiyamed Sinir <siyamed@google.com>
Fri, 27 May 2016 01:33:33 +0000 (18:33 -0700)
A partial revert for the CL I5dbc48a6c7f0f4ac4c693d5c95f0a99b989e07f4.
The mentioned CL tried to always set the maxLines attribute of
StaticLayout. However this caused regressions at certain points.

Bug: 28885989
Bug: 28468120
Change-Id: Ic09cb194c8811a06b5d53de50bfb77938b91b88d

core/java/android/widget/TextView.java

index fc120eb..5cbd284 100644 (file)
@@ -6857,11 +6857,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                         .setLineSpacing(mSpacingAdd, mSpacingMult)
                         .setIncludePad(mIncludePad)
                         .setBreakStrategy(mBreakStrategy)
-                        .setHyphenationFrequency(mHyphenationFrequency)
-                        .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE);
+                        .setHyphenationFrequency(mHyphenationFrequency);
                 if (shouldEllipsize) {
                     builder.setEllipsize(mEllipsize)
-                            .setEllipsizedWidth(ellipsisWidth);
+                            .setEllipsizedWidth(ellipsisWidth)
+                            .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE);
                 }
                 mHintLayout = builder.build();
             }
@@ -6948,12 +6948,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                     .setLineSpacing(mSpacingAdd, mSpacingMult)
                     .setIncludePad(mIncludePad)
                     .setBreakStrategy(mBreakStrategy)
-                    .setHyphenationFrequency(mHyphenationFrequency)
-                    .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE);
+                    .setHyphenationFrequency(mHyphenationFrequency);
             if (shouldEllipsize) {
                 builder.setEllipsize(effectiveEllipsize)
-                        .setEllipsizedWidth(ellipsisWidth);
-
+                        .setEllipsizedWidth(ellipsisWidth)
+                        .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE);
             }
             // TODO: explore always setting maxLines
             result = builder.build();