diff options
author | Keisuke Kuroyanagi <ksk@google.com> | 2015-06-26 05:11:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-26 05:11:25 +0000 |
commit | c1bd7da9906bc95c791dec6d52508fc9ee916a99 (patch) | |
tree | 4b7fb4564e5a85a39c957ea5c7bdaaf72a0ead69 /core/java/android/text | |
parent | 084b7a15c9a1bdbbb64d9921eaeb12235bc5fc17 (diff) | |
parent | f4a3f3a03c72b6a38dc2f3f965531dc2a12460df (diff) | |
download | frameworks_base-c1bd7da9906bc95c791dec6d52508fc9ee916a99.zip frameworks_base-c1bd7da9906bc95c791dec6d52508fc9ee916a99.tar.gz frameworks_base-c1bd7da9906bc95c791dec6d52508fc9ee916a99.tar.bz2 |
Merge "Fix: Ellipsis is wrongly applied or not applied in TextView." into mnc-dev
Diffstat (limited to 'core/java/android/text')
-rw-r--r-- | core/java/android/text/StaticLayout.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 464710b..b6fa4e4c 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -714,6 +714,27 @@ public class StaticLayout extends Layout { float[] lineWidths = lineBreaks.widths; int[] flags = lineBreaks.flags; + final int remainingLineCount = mMaximumVisibleLineCount - mLineCount; + final boolean ellipsisMayBeApplied = ellipsize != null + && (ellipsize == TextUtils.TruncateAt.END + || (mMaximumVisibleLineCount == 1 + && ellipsize != TextUtils.TruncateAt.MARQUEE)); + if (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]; + flag |= flags[i] & TAB_MASK; + } + lineWidths[remainingLineCount - 1] = width; + flags[remainingLineCount - 1] = flag; + + breakCount = remainingLineCount; + } + // here is the offset of the starting character of the line we are currently measuring int here = paraStart; |