diff options
author | Gilles Debunne <debunne@google.com> | 2012-03-06 13:57:16 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-03-06 13:57:16 -0800 |
commit | 957c800ac0cb8e375dc3d4c38011456d5c429f95 (patch) | |
tree | af2c849747cc7dda2b6277ca3700e848daeeb288 /core/java | |
parent | dbaf2cc1bfd96c16cb9b6cb0291b7a8814b3c66f (diff) | |
parent | c70e7a0b8add16d2e6cec4d58c3cc74d08cc20b4 (diff) | |
download | frameworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.zip frameworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.tar.gz frameworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.tar.bz2 |
Merge "Ellipsize avoids spaces and starts right after text"
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/text/MeasuredText.java | 26 | ||||
-rw-r--r-- | core/java/android/text/TextUtils.java | 8 |
2 files changed, 19 insertions, 15 deletions
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java index a52e2ba..715d1f2 100644 --- a/core/java/android/text/MeasuredText.java +++ b/core/java/android/text/MeasuredText.java @@ -222,23 +222,27 @@ class MeasuredText { return wid; } - int breakText(int start, int limit, boolean forwards, float width) { + int breakText(int limit, boolean forwards, float width) { float[] w = mWidths; if (forwards) { - for (int i = start; i < limit; ++i) { - if ((width -= w[i]) < 0) { - return i - start; - } + int i = 0; + while (i < limit) { + width -= w[i]; + if (width < 0.0f) break; + i++; } + while (i > 0 && mChars[i - 1] == ' ') i--; + return i; } else { - for (int i = limit; --i >= start;) { - if ((width -= w[i]) < 0) { - return limit - i -1; - } + int i = limit - 1; + while (i >= 0) { + width -= w[i]; + if (width < 0.0f) break; + i--; } + while (i < limit - 1 && mChars[i + 1] == ' ') i++; + return limit - i - 1; } - - return limit - start; } float measure(int start, int limit) { diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java index afae5bb2..270624c 100644 --- a/core/java/android/text/TextUtils.java +++ b/core/java/android/text/TextUtils.java @@ -1091,13 +1091,13 @@ public class TextUtils { if (avail < 0) { // it all goes } else if (where == TruncateAt.START) { - right = len - mt.breakText(0, len, false, avail); + right = len - mt.breakText(len, false, avail); } else if (where == TruncateAt.END || where == TruncateAt.END_SMALL) { - left = mt.breakText(0, len, true, avail); + left = mt.breakText(len, true, avail); } else { - right = len - mt.breakText(0, len, false, avail / 2); + right = len - mt.breakText(len, false, avail / 2); avail -= mt.measure(right, len); - left = mt.breakText(0, right, true, avail); + left = mt.breakText(right, true, avail); } if (callback != null) { |