summaryrefslogtreecommitdiffstats
path: root/core/java/android/text
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2015-06-26 05:11:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-26 05:11:25 +0000
commitc1bd7da9906bc95c791dec6d52508fc9ee916a99 (patch)
tree4b7fb4564e5a85a39c957ea5c7bdaaf72a0ead69 /core/java/android/text
parent084b7a15c9a1bdbbb64d9921eaeb12235bc5fc17 (diff)
parentf4a3f3a03c72b6a38dc2f3f965531dc2a12460df (diff)
downloadframeworks_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.java21
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;