Loading core/java/android/text/MeasuredText.java +15 −11 Original line number Diff line number Diff line Loading @@ -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) { Loading core/java/android/text/TextUtils.java +4 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading
core/java/android/text/MeasuredText.java +15 −11 Original line number Diff line number Diff line Loading @@ -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) { Loading
core/java/android/text/TextUtils.java +4 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading