Merge "Bugfixes in StaticLayout."
This commit is contained in:
committed by
Android (Google) Code Review
commit
59b8a3269e
@@ -1727,6 +1727,17 @@ public abstract class Layout {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inform this layout that not all of its lines will be displayed, because a maximum number of
|
||||
* lines has been set on the associated TextView.
|
||||
*
|
||||
* A non strictly positive value means that all lines are displayed.
|
||||
*
|
||||
* @param lineCount number of visible lines
|
||||
* @hide
|
||||
*/
|
||||
public void setMaximumVisibleLineCount(int lineCount) {}
|
||||
|
||||
private CharSequence mText;
|
||||
private TextPaint mPaint;
|
||||
/* package */ TextPaint mWorkPaint;
|
||||
@@ -1765,14 +1776,4 @@ public abstract class Layout {
|
||||
/* package */ static final Directions DIRS_ALL_RIGHT_TO_LEFT =
|
||||
new Directions(new int[] { 0, RUN_LENGTH_MASK | RUN_RTL_FLAG });
|
||||
|
||||
/**
|
||||
* Inform this layout that not all of its lines will be displayed, because a maximum number of
|
||||
* lines has been set on the associated TextView.
|
||||
*
|
||||
* A non positive value means that all lines are displayed.
|
||||
*
|
||||
* @param line line number of the last visible line (line numbers start at 1 for the first line)
|
||||
* @hide
|
||||
*/
|
||||
public void setMaximumVisibleLineCount(int line) {}
|
||||
}
|
||||
|
||||
@@ -355,8 +355,6 @@ public class StaticLayout extends Layout {
|
||||
okBottom = fitBottom;
|
||||
}
|
||||
} else {
|
||||
if (ellipsize != null) {
|
||||
// Break only at spaces using ok indexes.
|
||||
if (ok != here) {
|
||||
// Log.e("text", "output ok " + here + " to " +ok);
|
||||
|
||||
@@ -372,43 +370,7 @@ public class StaticLayout extends Layout {
|
||||
chooseHtv, fm, hasTabOrEmoji,
|
||||
needMultiply, paraStart, chdirs, dir, easy,
|
||||
ok == bufEnd, includepad, trackpad,
|
||||
chs, widths, here - paraStart,
|
||||
ellipsize, ellipsizedWidth, okWidth,
|
||||
paint);
|
||||
|
||||
here = ok;
|
||||
} else {
|
||||
// Act like it fit even though it didn't.
|
||||
|
||||
fitWidth = w;
|
||||
here = fit = j + 1;
|
||||
|
||||
if (fmTop < fitTop)
|
||||
fitTop = fmTop;
|
||||
if (fmAscent < fitAscent)
|
||||
fitAscent = fmAscent;
|
||||
if (fmDescent > fitDescent)
|
||||
fitDescent = fmDescent;
|
||||
if (fmBottom > fitBottom)
|
||||
fitBottom = fmBottom;
|
||||
}
|
||||
} else {
|
||||
if (ok != here) {
|
||||
// Log.e("text", "output ok " + here + " to " +ok);
|
||||
|
||||
while (ok < spanEnd && chs[ok - paraStart] == CHAR_SPACE) {
|
||||
ok++;
|
||||
}
|
||||
|
||||
v = out(source,
|
||||
here, ok,
|
||||
okAscent, okDescent, okTop, okBottom,
|
||||
v,
|
||||
spacingmult, spacingadd, chooseHt,
|
||||
chooseHtv, fm, hasTabOrEmoji,
|
||||
needMultiply, paraStart, chdirs, dir, easy,
|
||||
ok == bufEnd, includepad, trackpad,
|
||||
chs, widths, here - paraStart,
|
||||
chs, widths, paraStart,
|
||||
ellipsize, ellipsizedWidth, okWidth,
|
||||
paint);
|
||||
|
||||
@@ -424,7 +386,7 @@ public class StaticLayout extends Layout {
|
||||
chooseHtv, fm, hasTabOrEmoji,
|
||||
needMultiply, paraStart, chdirs, dir, easy,
|
||||
fit == bufEnd, includepad, trackpad,
|
||||
chs, widths, here - paraStart,
|
||||
chs, widths, paraStart,
|
||||
ellipsize, ellipsizedWidth, fitWidth,
|
||||
paint);
|
||||
|
||||
@@ -446,13 +408,12 @@ public class StaticLayout extends Layout {
|
||||
needMultiply, paraStart, chdirs, dir, easy,
|
||||
here + 1 == bufEnd, includepad,
|
||||
trackpad,
|
||||
chs, widths, here - paraStart,
|
||||
chs, widths, paraStart,
|
||||
ellipsize, ellipsizedWidth,
|
||||
widths[here - paraStart], paint);
|
||||
|
||||
here = here + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (here < spanStart) {
|
||||
// didn't output all the text for this span
|
||||
@@ -495,7 +456,7 @@ public class StaticLayout extends Layout {
|
||||
chooseHtv, fm, hasTabOrEmoji,
|
||||
needMultiply, paraStart, chdirs, dir, easy,
|
||||
paraEnd == bufEnd, includepad, trackpad,
|
||||
chs, widths, here - paraStart,
|
||||
chs, widths, paraStart,
|
||||
ellipsize, ellipsizedWidth, w, paint);
|
||||
}
|
||||
|
||||
@@ -614,19 +575,6 @@ public class StaticLayout extends Layout {
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
private static void dump(byte[] data, int count, String label) {
|
||||
if (false) {
|
||||
System.out.print(label);
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
System.out.print(" " + data[i]);
|
||||
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
private int out(CharSequence text, int start, int end,
|
||||
int above, int below, int top, int bottom, int v,
|
||||
float spacingmult, float spacingadd,
|
||||
@@ -729,8 +677,8 @@ public class StaticLayout extends Layout {
|
||||
if (easy) {
|
||||
mLineDirections[j] = linedirs;
|
||||
} else {
|
||||
mLineDirections[j] = AndroidBidi.directions(dir, chdirs, widthStart, chs,
|
||||
widthStart, end - start);
|
||||
mLineDirections[j] = AndroidBidi.directions(dir, chdirs, start - widthStart, chs,
|
||||
start - widthStart, end - start);
|
||||
}
|
||||
|
||||
// If ellipsize is in marquee mode, do not apply ellipsis on the first line
|
||||
@@ -869,7 +817,7 @@ public class StaticLayout extends Layout {
|
||||
@Override
|
||||
public int getLineDescent(int line) {
|
||||
int descent = mLines[mColumns * line + DESCENT];
|
||||
if (mMaximumVisibleLineCount > 0 && line >= mMaximumVisibleLineCount - 1 &&
|
||||
if (mMaximumVisibleLineCount > 0 && line >= mMaximumVisibleLineCount - 1 && // -1 intended
|
||||
line != mLineCount) {
|
||||
descent += getBottomPadding();
|
||||
}
|
||||
@@ -933,8 +881,8 @@ public class StaticLayout extends Layout {
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void setMaximumVisibleLineCount(int line) {
|
||||
mMaximumVisibleLineCount = line;
|
||||
public void setMaximumVisibleLineCount(int lineCount) {
|
||||
mMaximumVisibleLineCount = lineCount;
|
||||
}
|
||||
|
||||
private int mLineCount;
|
||||
|
||||
Reference in New Issue
Block a user