Loading api/current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -32624,6 +32624,21 @@ package android.text { method public int getTopPadding(); } public static final class StaticLayout.Builder { method public android.text.StaticLayout build(); method public static android.text.StaticLayout.Builder obtain(java.lang.CharSequence, int, int, android.text.TextPaint, int); method public android.text.StaticLayout.Builder setAlignment(android.text.Layout.Alignment); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setMaxLines(int); method public android.text.StaticLayout.Builder setText(java.lang.CharSequence); method public android.text.StaticLayout.Builder setTextDir(android.text.TextDirectionHeuristic); } public abstract interface TextDirectionHeuristic { method public abstract boolean isRtl(char[], int, int); method public abstract boolean isRtl(java.lang.CharSequence, int, int); api/system-current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -34834,6 +34834,21 @@ package android.text { method public int getTopPadding(); } public static final class StaticLayout.Builder { method public android.text.StaticLayout build(); method public static android.text.StaticLayout.Builder obtain(java.lang.CharSequence, int, int, android.text.TextPaint, int); method public android.text.StaticLayout.Builder setAlignment(android.text.Layout.Alignment); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setMaxLines(int); method public android.text.StaticLayout.Builder setText(java.lang.CharSequence); method public android.text.StaticLayout.Builder setTextDir(android.text.TextDirectionHeuristic); } public abstract interface TextDirectionHeuristic { method public abstract boolean isRtl(char[], int, int); method public abstract boolean isRtl(java.lang.CharSequence, int, int); core/java/android/text/DynamicLayout.java +1 −2 Original line number Diff line number Diff line Loading @@ -290,8 +290,7 @@ public class DynamicLayout extends Layout .setPaint(getPaint()) .setWidth(getWidth()) .setTextDir(getTextDirectionHeuristic()) .setSpacingMult(getSpacingMultiplier()) .setSpacingAdd(getSpacingAdd()) .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsize(mEllipsizeAt) .setBreakStrategy(mBreakStrategy); Loading core/java/android/text/StaticLayout.java +138 −16 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.text; import android.annotation.Nullable; import android.graphics.Paint; import android.text.style.LeadingMarginSpan; import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; Loading Loading @@ -46,17 +47,29 @@ public class StaticLayout extends Layout { static final String TAG = "StaticLayout"; /** * Builder for static layouts. It would be better if this were a public * API (as it would offer much greater flexibility for adding new options) * but for the time being it's just internal. * * @hide * Builder for static layouts. The builder is a newer pattern for constructing * StaticLayout objects and should be preferred over the constructors, * particularly to access newer features. To build a static layout, first * call {@link #obtain} with the required arguments (text, paint, and width), * then call setters for optional parameters, and finally {@link #build} * to build the StaticLayout object. Parameters not explicitly set will get * default values. */ public final static class Builder { private Builder() { mNativePtr = nNewBuilder(); } /** * Obtain a builder for constructing StaticLayout objects * * @param source The text to be laid out, optionally with spans * @param start The index of the start of the text * @param end The index + 1 of the end of the text * @param paint The base paint used for layout * @param width The width in pixels * @return a builder object used for constructing the StaticLayout */ public static Builder obtain(CharSequence source, int start, int end, TextPaint paint, int width) { Builder b = sPool.acquire(); Loading Loading @@ -100,6 +113,18 @@ public class StaticLayout extends Layout { return setText(source, 0, source.length()); } /** * Set the text. Only useful when re-using the builder, which is done for * the internal implementation of {@link DynamicLayout} but not as part * of normal {@link StaticLayout} usage. * * @param source The text to be laid out, optionally with spans * @param start The index of the start of the text * @param end The index + 1 of the end of the text * @return this builder, useful for chaining * * @hide */ public Builder setText(CharSequence source, int start, int end) { mText = source; mStart = start; Loading @@ -107,11 +132,27 @@ public class StaticLayout extends Layout { return this; } /** * Set the paint. Internal for reuse cases only. * * @param paint The base paint used for layout * @return this builder, useful for chaining * * @hide */ public Builder setPaint(TextPaint paint) { mPaint = paint; return this; } /** * Set the width. Internal for reuse cases only. * * @param width The width in pixels * @return this builder, useful for chaining * * @hide */ public Builder setWidth(int width) { mWidth = width; if (mEllipsize == null) { Loading @@ -120,53 +161,126 @@ public class StaticLayout extends Layout { return this; } /** * Set the alignment. The default is {@link Layout.Alignment#ALIGN_NORMAL}. * * @param alignment Alignment for the resulting {@link StaticLayout} * @return this builder, useful for chaining */ public Builder setAlignment(Alignment alignment) { mAlignment = alignment; return this; } /** * Set the text direction heuristic. The text direction heuristic is used to * resolve text direction based per-paragraph based on the input text. The default is * {@link TextDirectionHeuristics#FIRSTSTRONG_LTR}. * * @param textDir text direction heuristic for resolving BiDi behavior. * @return this builder, useful for chaining */ public Builder setTextDir(TextDirectionHeuristic textDir) { mTextDir = textDir; return this; } // TODO: combine the following, as they're almost always set together? public Builder setSpacingMult(float spacingMult) { mSpacingMult = spacingMult; return this; } public Builder setSpacingAdd(float spacingAdd) { /** * Set line spacing parameters. The default is 0.0 for {@code spacingAdd} * and 1.0 for {@code spacingMult}. * * @param spacingAdd line spacing add * @param spacingMult line spacing multiplier * @return this builder, useful for chaining * @see android.widget.TextView#setLineSpacing */ public Builder setLineSpacing(float spacingAdd, float spacingMult) { mSpacingAdd = spacingAdd; mSpacingMult = spacingMult; return this; } /** * Set whether to include extra space beyond font ascent and descent (which is * needed to avoid clipping in some languages, such as Arabic and Kannada). The * default is {@code true}. * * @param includePad whether to include padding * @return this builder, useful for chaining * @see android.widget.TextView#setIncludeFontPadding */ public Builder setIncludePad(boolean includePad) { mIncludePad = includePad; return this; } // TODO: combine the following? /** * Set the width as used for ellipsizing purposes, if it differs from the * normal layout width. The default is the {@code width} * passed to {@link #obtain}. * * @param ellipsizedWidth width used for ellipsizing, in pixels * @return this builder, useful for chaining * @see android.widget.TextView#setEllipsize */ public Builder setEllipsizedWidth(int ellipsizedWidth) { mEllipsizedWidth = ellipsizedWidth; return this; } public Builder setEllipsize(TextUtils.TruncateAt ellipsize) { /** * Set ellipsizing on the layout. Causes words that are longer than the view * is wide, or exceeding the number of lines (see #setMaxLines) in the case * of {@link android.text.TextUtils.TruncateAt#END} or * {@link android.text.TextUtils.TruncateAt#MARQUEE}, to be ellipsized instead * of broken. The default is * {@code null}, indicating no ellipsis is to be applied. * * @param ellipsize type of ellipsis behavior * @return this builder, useful for chaining * @see android.widget.TextView#setEllipsize */ public Builder setEllipsize(@Nullable TextUtils.TruncateAt ellipsize) { mEllipsize = ellipsize; return this; } /** * Set maximum number of lines. This is particularly useful in the case of * ellipsizing, where it changes the layout of the last line. The default is * unlimited. * * @param maxLines maximum number of lines in the layout * @return this builder, useful for chaining * @see android.widget.TextView#setMaxLines */ public Builder setMaxLines(int maxLines) { mMaxLines = maxLines; return this; } /** * Set break strategy, useful for selecting high quality or balanced paragraph * layout options. The default is {@link Layout#BREAK_STRATEGY_SIMPLE}. * * @param breakStrategy break strategy for paragraph layout * @return this builder, useful for chaining * @see android.widget.TextView#setBreakStrategy */ public Builder setBreakStrategy(@BreakStrategy int breakStrategy) { mBreakStrategy = breakStrategy; return this; } /** * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * pixels. For lines past the last element in the array, the last element repeats. * * @param leftIndents array of indent values for left margin, in pixels * @param rightIndents array of indent values for right margin, in pixels * @return this builder, useful for chaining * @see android.widget.TextView#setIndents */ public Builder setIndents(int[] leftIndents, int[] rightIndents) { int leftLen = leftIndents == null ? 0 : leftIndents.length; int rightLen = rightIndents == null ? 0 : rightIndents.length; Loading Loading @@ -220,6 +334,15 @@ public class StaticLayout extends Layout { nAddReplacementRun(mNativePtr, start, end, width); } /** * Build the {@link StaticLayout} after options have been set. * * <p>Note: the builder object must not be reused in any way after calling this * method. Setting parameters after calling this method, or calling it a second * time on the same builder object, will likely lead to unexpected results. * * @return the newly constructed {@link StaticLayout} object */ public StaticLayout build() { StaticLayout result = new StaticLayout(this); Builder.recycle(this); Loading Loading @@ -332,8 +455,7 @@ public class StaticLayout extends Layout { Builder b = Builder.obtain(source, bufstart, bufend, paint, outerwidth) .setAlignment(align) .setTextDir(textDir) .setSpacingMult(spacingmult) .setSpacingAdd(spacingadd) .setLineSpacing(spacingadd, spacingmult) .setIncludePad(includepad) .setEllipsizedWidth(ellipsizedWidth) .setEllipsize(ellipsize) Loading core/java/android/widget/TextView.java +2 −4 Original line number Diff line number Diff line Loading @@ -6633,8 +6633,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mHint.length(), mTextPaint, hintWidth) .setAlignment(alignment) .setTextDir(mTextDir) .setSpacingMult(mSpacingMult) .setSpacingAdd(mSpacingAdd) .setLineSpacing(mSpacingAdd, mSpacingMult) .setIncludePad(mIncludePad) .setBreakStrategy(mBreakStrategy); if (mLeftIndents != null || mRightIndents != null) { Loading Loading @@ -6723,8 +6722,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener 0, mTransformed.length(), mTextPaint, wantWidth) .setAlignment(alignment) .setTextDir(mTextDir) .setSpacingMult(mSpacingMult) .setSpacingAdd(mSpacingAdd) .setLineSpacing(mSpacingAdd, mSpacingMult) .setIncludePad(mIncludePad) .setBreakStrategy(mBreakStrategy); if (mLeftIndents != null || mRightIndents != null) { Loading Loading
api/current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -32624,6 +32624,21 @@ package android.text { method public int getTopPadding(); } public static final class StaticLayout.Builder { method public android.text.StaticLayout build(); method public static android.text.StaticLayout.Builder obtain(java.lang.CharSequence, int, int, android.text.TextPaint, int); method public android.text.StaticLayout.Builder setAlignment(android.text.Layout.Alignment); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setMaxLines(int); method public android.text.StaticLayout.Builder setText(java.lang.CharSequence); method public android.text.StaticLayout.Builder setTextDir(android.text.TextDirectionHeuristic); } public abstract interface TextDirectionHeuristic { method public abstract boolean isRtl(char[], int, int); method public abstract boolean isRtl(java.lang.CharSequence, int, int);
api/system-current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -34834,6 +34834,21 @@ package android.text { method public int getTopPadding(); } public static final class StaticLayout.Builder { method public android.text.StaticLayout build(); method public static android.text.StaticLayout.Builder obtain(java.lang.CharSequence, int, int, android.text.TextPaint, int); method public android.text.StaticLayout.Builder setAlignment(android.text.Layout.Alignment); method public android.text.StaticLayout.Builder setBreakStrategy(int); method public android.text.StaticLayout.Builder setEllipsize(android.text.TextUtils.TruncateAt); method public android.text.StaticLayout.Builder setEllipsizedWidth(int); method public android.text.StaticLayout.Builder setIncludePad(boolean); method public android.text.StaticLayout.Builder setIndents(int[], int[]); method public android.text.StaticLayout.Builder setLineSpacing(float, float); method public android.text.StaticLayout.Builder setMaxLines(int); method public android.text.StaticLayout.Builder setText(java.lang.CharSequence); method public android.text.StaticLayout.Builder setTextDir(android.text.TextDirectionHeuristic); } public abstract interface TextDirectionHeuristic { method public abstract boolean isRtl(char[], int, int); method public abstract boolean isRtl(java.lang.CharSequence, int, int);
core/java/android/text/DynamicLayout.java +1 −2 Original line number Diff line number Diff line Loading @@ -290,8 +290,7 @@ public class DynamicLayout extends Layout .setPaint(getPaint()) .setWidth(getWidth()) .setTextDir(getTextDirectionHeuristic()) .setSpacingMult(getSpacingMultiplier()) .setSpacingAdd(getSpacingAdd()) .setLineSpacing(getSpacingAdd(), getSpacingMultiplier()) .setEllipsizedWidth(mEllipsizedWidth) .setEllipsize(mEllipsizeAt) .setBreakStrategy(mBreakStrategy); Loading
core/java/android/text/StaticLayout.java +138 −16 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.text; import android.annotation.Nullable; import android.graphics.Paint; import android.text.style.LeadingMarginSpan; import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; Loading Loading @@ -46,17 +47,29 @@ public class StaticLayout extends Layout { static final String TAG = "StaticLayout"; /** * Builder for static layouts. It would be better if this were a public * API (as it would offer much greater flexibility for adding new options) * but for the time being it's just internal. * * @hide * Builder for static layouts. The builder is a newer pattern for constructing * StaticLayout objects and should be preferred over the constructors, * particularly to access newer features. To build a static layout, first * call {@link #obtain} with the required arguments (text, paint, and width), * then call setters for optional parameters, and finally {@link #build} * to build the StaticLayout object. Parameters not explicitly set will get * default values. */ public final static class Builder { private Builder() { mNativePtr = nNewBuilder(); } /** * Obtain a builder for constructing StaticLayout objects * * @param source The text to be laid out, optionally with spans * @param start The index of the start of the text * @param end The index + 1 of the end of the text * @param paint The base paint used for layout * @param width The width in pixels * @return a builder object used for constructing the StaticLayout */ public static Builder obtain(CharSequence source, int start, int end, TextPaint paint, int width) { Builder b = sPool.acquire(); Loading Loading @@ -100,6 +113,18 @@ public class StaticLayout extends Layout { return setText(source, 0, source.length()); } /** * Set the text. Only useful when re-using the builder, which is done for * the internal implementation of {@link DynamicLayout} but not as part * of normal {@link StaticLayout} usage. * * @param source The text to be laid out, optionally with spans * @param start The index of the start of the text * @param end The index + 1 of the end of the text * @return this builder, useful for chaining * * @hide */ public Builder setText(CharSequence source, int start, int end) { mText = source; mStart = start; Loading @@ -107,11 +132,27 @@ public class StaticLayout extends Layout { return this; } /** * Set the paint. Internal for reuse cases only. * * @param paint The base paint used for layout * @return this builder, useful for chaining * * @hide */ public Builder setPaint(TextPaint paint) { mPaint = paint; return this; } /** * Set the width. Internal for reuse cases only. * * @param width The width in pixels * @return this builder, useful for chaining * * @hide */ public Builder setWidth(int width) { mWidth = width; if (mEllipsize == null) { Loading @@ -120,53 +161,126 @@ public class StaticLayout extends Layout { return this; } /** * Set the alignment. The default is {@link Layout.Alignment#ALIGN_NORMAL}. * * @param alignment Alignment for the resulting {@link StaticLayout} * @return this builder, useful for chaining */ public Builder setAlignment(Alignment alignment) { mAlignment = alignment; return this; } /** * Set the text direction heuristic. The text direction heuristic is used to * resolve text direction based per-paragraph based on the input text. The default is * {@link TextDirectionHeuristics#FIRSTSTRONG_LTR}. * * @param textDir text direction heuristic for resolving BiDi behavior. * @return this builder, useful for chaining */ public Builder setTextDir(TextDirectionHeuristic textDir) { mTextDir = textDir; return this; } // TODO: combine the following, as they're almost always set together? public Builder setSpacingMult(float spacingMult) { mSpacingMult = spacingMult; return this; } public Builder setSpacingAdd(float spacingAdd) { /** * Set line spacing parameters. The default is 0.0 for {@code spacingAdd} * and 1.0 for {@code spacingMult}. * * @param spacingAdd line spacing add * @param spacingMult line spacing multiplier * @return this builder, useful for chaining * @see android.widget.TextView#setLineSpacing */ public Builder setLineSpacing(float spacingAdd, float spacingMult) { mSpacingAdd = spacingAdd; mSpacingMult = spacingMult; return this; } /** * Set whether to include extra space beyond font ascent and descent (which is * needed to avoid clipping in some languages, such as Arabic and Kannada). The * default is {@code true}. * * @param includePad whether to include padding * @return this builder, useful for chaining * @see android.widget.TextView#setIncludeFontPadding */ public Builder setIncludePad(boolean includePad) { mIncludePad = includePad; return this; } // TODO: combine the following? /** * Set the width as used for ellipsizing purposes, if it differs from the * normal layout width. The default is the {@code width} * passed to {@link #obtain}. * * @param ellipsizedWidth width used for ellipsizing, in pixels * @return this builder, useful for chaining * @see android.widget.TextView#setEllipsize */ public Builder setEllipsizedWidth(int ellipsizedWidth) { mEllipsizedWidth = ellipsizedWidth; return this; } public Builder setEllipsize(TextUtils.TruncateAt ellipsize) { /** * Set ellipsizing on the layout. Causes words that are longer than the view * is wide, or exceeding the number of lines (see #setMaxLines) in the case * of {@link android.text.TextUtils.TruncateAt#END} or * {@link android.text.TextUtils.TruncateAt#MARQUEE}, to be ellipsized instead * of broken. The default is * {@code null}, indicating no ellipsis is to be applied. * * @param ellipsize type of ellipsis behavior * @return this builder, useful for chaining * @see android.widget.TextView#setEllipsize */ public Builder setEllipsize(@Nullable TextUtils.TruncateAt ellipsize) { mEllipsize = ellipsize; return this; } /** * Set maximum number of lines. This is particularly useful in the case of * ellipsizing, where it changes the layout of the last line. The default is * unlimited. * * @param maxLines maximum number of lines in the layout * @return this builder, useful for chaining * @see android.widget.TextView#setMaxLines */ public Builder setMaxLines(int maxLines) { mMaxLines = maxLines; return this; } /** * Set break strategy, useful for selecting high quality or balanced paragraph * layout options. The default is {@link Layout#BREAK_STRATEGY_SIMPLE}. * * @param breakStrategy break strategy for paragraph layout * @return this builder, useful for chaining * @see android.widget.TextView#setBreakStrategy */ public Builder setBreakStrategy(@BreakStrategy int breakStrategy) { mBreakStrategy = breakStrategy; return this; } /** * Set indents. Arguments are arrays holding an indent amount, one per line, measured in * pixels. For lines past the last element in the array, the last element repeats. * * @param leftIndents array of indent values for left margin, in pixels * @param rightIndents array of indent values for right margin, in pixels * @return this builder, useful for chaining * @see android.widget.TextView#setIndents */ public Builder setIndents(int[] leftIndents, int[] rightIndents) { int leftLen = leftIndents == null ? 0 : leftIndents.length; int rightLen = rightIndents == null ? 0 : rightIndents.length; Loading Loading @@ -220,6 +334,15 @@ public class StaticLayout extends Layout { nAddReplacementRun(mNativePtr, start, end, width); } /** * Build the {@link StaticLayout} after options have been set. * * <p>Note: the builder object must not be reused in any way after calling this * method. Setting parameters after calling this method, or calling it a second * time on the same builder object, will likely lead to unexpected results. * * @return the newly constructed {@link StaticLayout} object */ public StaticLayout build() { StaticLayout result = new StaticLayout(this); Builder.recycle(this); Loading Loading @@ -332,8 +455,7 @@ public class StaticLayout extends Layout { Builder b = Builder.obtain(source, bufstart, bufend, paint, outerwidth) .setAlignment(align) .setTextDir(textDir) .setSpacingMult(spacingmult) .setSpacingAdd(spacingadd) .setLineSpacing(spacingadd, spacingmult) .setIncludePad(includepad) .setEllipsizedWidth(ellipsizedWidth) .setEllipsize(ellipsize) Loading
core/java/android/widget/TextView.java +2 −4 Original line number Diff line number Diff line Loading @@ -6633,8 +6633,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mHint.length(), mTextPaint, hintWidth) .setAlignment(alignment) .setTextDir(mTextDir) .setSpacingMult(mSpacingMult) .setSpacingAdd(mSpacingAdd) .setLineSpacing(mSpacingAdd, mSpacingMult) .setIncludePad(mIncludePad) .setBreakStrategy(mBreakStrategy); if (mLeftIndents != null || mRightIndents != null) { Loading Loading @@ -6723,8 +6722,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener 0, mTransformed.length(), mTextPaint, wantWidth) .setAlignment(alignment) .setTextDir(mTextDir) .setSpacingMult(mSpacingMult) .setSpacingAdd(mSpacingAdd) .setLineSpacing(mSpacingAdd, mSpacingMult) .setIncludePad(mIncludePad) .setBreakStrategy(mBreakStrategy); if (mLeftIndents != null || mRightIndents != null) { Loading