Fix bug #5387832 [UI/Visual] Address of the website is not displayed properly(second line of the address is partly shown)

- make DynamicLayout honor max lines
- make StaticLayout.generate() take maxLines as a parameter instead of using the field mMaximumVisibleLineCount

Change-Id: I9eafb1be4b8bb2aa881514955a6903f559cb6a1e
This commit is contained in:
Fabrice Di Meglio
2011-09-29 12:44:16 -07:00
parent d4ad7b4984
commit a130e5f59d
3 changed files with 13 additions and 9 deletions

View File

@@ -76,7 +76,7 @@ extends Layout
boolean includepad,
TextUtils.TruncateAt ellipsize, int ellipsizedWidth) {
this(base, display, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR,
spacingmult, spacingadd, includepad, ellipsize, ellipsizedWidth);
spacingmult, spacingadd, includepad, ellipsize, ellipsizedWidth, Integer.MAX_VALUE);
}
/**
@@ -93,7 +93,7 @@ extends Layout
int width, Alignment align, TextDirectionHeuristic textDir,
float spacingmult, float spacingadd,
boolean includepad,
TextUtils.TruncateAt ellipsize, int ellipsizedWidth) {
TextUtils.TruncateAt ellipsize, int ellipsizedWidth, int maxLines) {
super((ellipsize == null)
? display
: (display instanceof Spanned)
@@ -135,6 +135,8 @@ extends Layout
mEllipsize = true;
}
mMaxLines = maxLines;
// Initial state is a single line with 0 characters (0 to 0),
// with top at 0 and bottom at whatever is natural, and
// undefined ellipsis.
@@ -283,7 +285,7 @@ extends Layout
reflowed.generate(text, where, where + after,
getPaint(), getWidth(), getAlignment(), getTextDirectionHeuristic(),
getSpacingMultiplier(), getSpacingAdd(),
false, true, mEllipsizedWidth, mEllipsizeAt);
false, true, mEllipsizedWidth, mEllipsizeAt, mMaxLines);
int n = reflowed.getLineCount();
// If the new layout has a blank line at the end, but it is not
@@ -488,6 +490,8 @@ extends Layout
private int mTopPadding, mBottomPadding;
private int mMaxLines;
private static StaticLayout sStaticLayout = new StaticLayout(null);
private static final Object[] sLock = new Object[0];

View File

@@ -139,7 +139,7 @@ public class StaticLayout extends Layout {
generate(source, bufstart, bufend, paint, outerwidth, align, textDir,
spacingmult, spacingadd, includepad, includepad,
ellipsizedWidth, ellipsize);
ellipsizedWidth, ellipsize, mMaximumVisibleLineCount);
mMeasured = MeasuredText.recycle(mMeasured);
mFontMetricsInt = null;
@@ -160,7 +160,7 @@ public class StaticLayout extends Layout {
Alignment align, TextDirectionHeuristic textDir,
float spacingmult, float spacingadd,
boolean includepad, boolean trackpad,
float ellipsizedWidth, TextUtils.TruncateAt ellipsize) {
float ellipsizedWidth, TextUtils.TruncateAt ellipsize, int maxLines) {
mLineCount = 0;
int v = 0;
@@ -477,13 +477,13 @@ public class StaticLayout extends Layout {
width = restWidth;
}
}
if (mLineCount >= mMaximumVisibleLineCount) {
if (mLineCount >= maxLines) {
break;
}
}
}
if (paraEnd != here && mLineCount < mMaximumVisibleLineCount) {
if (paraEnd != here && mLineCount < maxLines) {
if ((fitTop | fitBottom | fitDescent | fitAscent) == 0) {
paint.getFontMetricsInt(fm);
@@ -514,7 +514,7 @@ public class StaticLayout extends Layout {
}
if ((bufEnd == bufStart || source.charAt(bufEnd - 1) == CHAR_NEW_LINE) &&
mLineCount < mMaximumVisibleLineCount) {
mLineCount < maxLines) {
// Log.e("text", "output last " + bufEnd);
paint.getFontMetricsInt(fm);

View File

@@ -6253,7 +6253,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
result = new DynamicLayout(mText, mTransformed, mTextPaint, w,
alignment, mTextDir, mSpacingMult,
mSpacingAdd, mIncludePad, mInput == null ? effectiveEllipsize : null,
ellipsisWidth);
ellipsisWidth, mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE);
} else {
if (boring == UNKNOWN_BORING) {
boring = BoringLayout.isBoring(mTransformed, mTextPaint, mTextDir, mBoring);