Merge "Sum up character widths to get the last line width for ellipsis." into nyc-dev

This commit is contained in:
Keisuke Kuroyanagi
2016-05-10 21:16:01 +00:00
committed by Android (Google) Code Review

View File

@@ -754,15 +754,21 @@ public class StaticLayout extends Layout {
&& ellipsize != TextUtils.TruncateAt.MARQUEE)); && ellipsize != TextUtils.TruncateAt.MARQUEE));
if (remainingLineCount > 0 && remainingLineCount < breakCount && if (remainingLineCount > 0 && remainingLineCount < breakCount &&
ellipsisMayBeApplied) { ellipsisMayBeApplied) {
// Treat the last line and overflowed lines as a single line.
breaks[remainingLineCount - 1] = breaks[breakCount - 1];
// Calculate width and flag. // Calculate width and flag.
float width = 0; float width = 0;
int flag = 0; int flag = 0;
for (int i = remainingLineCount - 1; i < breakCount; i++) { for (int i = remainingLineCount - 1; i < breakCount; i++) {
if (i == breakCount - 1) {
width += lineWidths[i]; 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; 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; lineWidths[remainingLineCount - 1] = width;
flags[remainingLineCount - 1] = flag; flags[remainingLineCount - 1] = flag;