summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2016-05-10 21:16:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-05-10 21:16:02 +0000
commitf2cbf95b6b48d0c5dea14db4edbd255ff751beaa (patch)
tree392cc6cea563b3b20fe887850f326395788ea98d /core/java/android
parentf829c1463b4805545d15924ad6243b9405eb83d6 (diff)
parent78f0d83550d70f043e1b9d35f56efa8c7572f44f (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.java12
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;