diff options
| author | Keisuke Kuroyanagi <ksk@google.com> | 2016-05-10 21:16:01 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-05-10 21:16:02 +0000 |
| commit | f2cbf95b6b48d0c5dea14db4edbd255ff751beaa (patch) | |
| tree | 392cc6cea563b3b20fe887850f326395788ea98d /core/java/android | |
| parent | f829c1463b4805545d15924ad6243b9405eb83d6 (diff) | |
| parent | 78f0d83550d70f043e1b9d35f56efa8c7572f44f (diff) | |
Merge "Sum up character widths to get the last line width for ellipsis." into nyc-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/text/StaticLayout.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 239f2d0c89b2..bb131a0e83e8 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -754,15 +754,21 @@ public class StaticLayout extends Layout { && ellipsize != TextUtils.TruncateAt.MARQUEE)); if (remainingLineCount > 0 && remainingLineCount < breakCount && ellipsisMayBeApplied) { - // Treat the last line and overflowed lines as a single line. - breaks[remainingLineCount - 1] = breaks[breakCount - 1]; // Calculate width and flag. float width = 0; int flag = 0; for (int i = remainingLineCount - 1; i < breakCount; i++) { - width += lineWidths[i]; + if (i == breakCount - 1) { + width += lineWidths[i]; + } else { + for (int j = (i == 0 ? 0 : breaks[i - 1]); j < breaks[i]; j++) { + width += widths[j]; + } + } flag |= flags[i] & TAB_MASK; } + // Treat the last line and overflowed lines as a single line. + breaks[remainingLineCount - 1] = breaks[breakCount - 1]; lineWidths[remainingLineCount - 1] = width; flags[remainingLineCount - 1] = flag; |
