DynamicLayout


public class DynamicLayout
extends Layout

java.lang.Object
   ↳ android.text.Layout
     ↳ android.text.DynamicLayout


DynamicLayout is a text layout that updates itself as the text is edited.

This is used by widgets to control text layout. You should not need to use this class directly unless you are implementing your own widget or custom display object, or need to call Canvas.drawText() directly.

Summary

Nested classes

class DynamicLayout.Builder

Builder for dynamic layouts. 

Inherited constants

int BREAK_STRATEGY_BALANCED

Value for break strategy indicating balanced line breaking.

int BREAK_STRATEGY_HIGH_QUALITY

Value for break strategy indicating high quality line breaking, including automatic hyphenation and doing whole-paragraph optimization of line breaks.

int BREAK_STRATEGY_SIMPLE

Value for break strategy indicating simple line breaking.

float DEFAULT_LINESPACING_ADDITION

float DEFAULT_LINESPACING_MULTIPLIER

int DIR_LEFT_TO_RIGHT

int DIR_RIGHT_TO_LEFT

int HYPHENATION_FREQUENCY_FULL

Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical in typography.

int HYPHENATION_FREQUENCY_FULL_FAST

Value for hyphenation frequency indicating the full amount of automatic hyphenation with using faster algorithm.

int HYPHENATION_FREQUENCY_NONE

Value for hyphenation frequency indicating no automatic hyphenation.

int HYPHENATION_FREQUENCY_NORMAL

Value for hyphenation frequency indicating a light amount of automatic hyphenation, which is a conservative default.

int HYPHENATION_FREQUENCY_NORMAL_FAST

Value for hyphenation frequency indicating a light amount of automatic hyphenation with using faster algorithm.

int JUSTIFICATION_MODE_INTER_CHARACTER

Value for justification mode indicating the text is justified by stretching letter spacing.

int JUSTIFICATION_MODE_INTER_WORD

Value for justification mode indicating the text is justified by stretching word spacing.

int JUSTIFICATION_MODE_NONE

Value for justification mode indicating no justification.

Inherited fields

public static final Layout.TextInclusionStrategy INCLUSION_STRATEGY_ANY_OVERLAP

Strategy which considers a text segment to be inside a rectangle area if the segment bounds intersect the rectangle.

public static final Layout.TextInclusionStrategy INCLUSION_STRATEGY_CONTAINS_ALL

Strategy which considers a text segment to be inside a rectangle area if the segment bounds are completely contained within the rectangle.

public static final Layout.TextInclusionStrategy INCLUSION_STRATEGY_CONTAINS_CENTER

Strategy which considers a text segment to be inside a rectangle area if the center of the segment bounds is inside the rectangle.

Public constructors

DynamicLayout(CharSequence base, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad)

This constructor is deprecated. Use Builder instead.

DynamicLayout(CharSequence base, CharSequence display, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad)

This constructor is deprecated. Use Builder instead.

DynamicLayout(CharSequence base, CharSequence display, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)

This constructor is deprecated. Use Builder instead.

Public methods

int getBottomPadding()

Returns the number of extra pixels of descent padding in the bottom line of the Layout.

int getEllipsisCount(int line)

Returns the number of characters to be ellipsized away, or 0 if no ellipsis is to take place.

int getEllipsisStart(int line)

Return the offset of the first character to be ellipsized away, relative to the start of the line.

int getEllipsizedWidth()

Return the width to which this layout is ellipsized.

LineBreakConfig getLineBreakConfig()

Gets the LineBreakConfig used in this DynamicLayout.

boolean getLineContainsTab(int line)

Returns whether the specified line contains one or more characters that need to be handled specially, like tabs.

int getLineCount()

Return the number of lines of text in this layout.

int getLineDescent(int line)

Return the descent of the specified line(0…getLineCount() - 1).

final Layout.Directions getLineDirections(int line)

Returns the directional run information for the specified line.

int getLineStart(int line)

Return the text offset of the beginning of the specified line ( 0…getLineCount()).

int getLineTop(int line)

Return the vertical position of the top of the specified line (0…getLineCount()).

int getParagraphDirection(int line)

Returns the primary directionality of the paragraph containing the specified line, either 1 for left-to-right lines, or -1 for right-to-left lines (see DIR_LEFT_TO_RIGHT, DIR_RIGHT_TO_LEFT).

int getTopPadding()

Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.

Inherited methods

RectF computeDrawingBoundingBox()

Get an actual bounding box that draws text content.

void draw(Canvas c)

Draw this Layout on the specified Canvas.

void draw(Canvas canvas, Path selectionHighlight, Paint selectionHighlightPaint, int cursorOffsetVertical)

Draw this Layout on the specified canvas, with the highlight path drawn between the background and the text.

void draw(Canvas canvas, List<Path> highlightPaths, List<Paint> highlightPaints, Path selectionPath, Paint selectionPaint, int cursorOffsetVertical)

Draw this layout on the specified canvas.

void drawBackground(Canvas canvas)

Draw background of this layout.

void drawText(Canvas canvas)

Draw text part of this layout.

void fillCharacterBounds(int start, int end, float[] bounds, int boundsStart)

Return the characters' bounds in the given range.

final Layout.Alignment getAlignment()

Returns the alignment used for creating this layout in pixels.

abstract int getBottomPadding()

Returns the number of extra pixels of descent padding in the bottom line of the Layout.

final int getBreakStrategy()

Return the break strategy used for creating this layout.

void getCursorPath(int point, Path dest, CharSequence editingBuffer)

Fills in the specified Path with a representation of a cursor at the specified offset.

static float getDesiredWidth(CharSequence source, TextPaint paint)

Return how wide a layout must be in order to display the specified text with one line per paragraph.

static float getDesiredWidth(CharSequence source, int start, int end, TextPaint paint)

Return how wide a layout must be in order to display the specified text slice with one line per paragraph.

abstract int getEllipsisCount(int line)

Returns the number of characters to be ellipsized away, or 0 if no ellipsis is to take place.

abstract int getEllipsisStart(int line)

Return the offset of the first character to be ellipsized away, relative to the start of the line.

final TextUtils.TruncateAt getEllipsize()

Return the ellipsize option used for creating this layout.

int getEllipsizedWidth()

Return the width to which this layout is ellipsized.

int getHeight()

Return the total height of this layout.

final int getHyphenationFrequency()

Return the hyphenation frequency used for creating this layout.

final int getJustificationMode()

Return the justification mode used for creating this layout.

final int[] getLeftIndents()

Return a copy of the left indents used for this layout.

final int getLineAscent(int line)

Get the ascent of the text on the specified line.

final int getLineBaseline(int line)

Return the vertical position of the baseline of the specified line.

int getLineBottom(int line, boolean includeLineSpacing)

Return the vertical position of the bottom of the specified line.

final int getLineBottom(int line)

Return the vertical position of the bottom of the specified line.

int getLineBounds(int line, Rect bounds)

Return the baseline for the specified line (0…getLineCount() - 1) If bounds is not null, return the top, left, right, bottom extents of the specified line in it.

LineBreakConfig getLineBreakConfig()

Gets the LineBreakConfig used for creating this layout.

abstract boolean getLineContainsTab(int line)

Returns whether the specified line contains one or more characters that need to be handled specially, like tabs.

abstract int getLineCount()

Return the number of lines of text in this layout.

abstract int getLineDescent(int line)

Return the descent of the specified line(0…getLineCount() - 1).

abstract Layout.Directions getLineDirections(int line)

Returns the directional run information for the specified line.

final int getLineEnd(int line)

Return the text offset after the last character on the specified line.

int getLineForOffset(int offset)

Get the line number on which the specified text offset appears.

int getLineForVertical(int vertical)

Get the line number corresponding to the specified vertical position.

float getLineLeft(int line)

Get the leftmost position that should be exposed for horizontal scrolling on the specified line.

int getLineLetterSpacingUnitCount(int line, boolean includeTrailingWhitespace)

Returns the number of letter spacing unit in the line.

float getLineMax(int line)

Gets the unsigned horizontal extent of the specified line, including leading margin indent, but excluding trailing whitespace.

float getLineRight(int line)

Get the rightmost position that should be exposed for horizontal scrolling on the specified line.

final float getLineSpacingAmount()

Returns the amount added to the line height.

final float getLineSpacingMultiplier()

Returns the multiplier applied to the line height.

abstract int getLineStart(int line)

Return the text offset of the beginning of the specified line ( 0…getLineCount()).

abstract int getLineTop(int line)

Return the vertical position of the top of the specified line (0…getLineCount()).

int getLineVisibleEnd(int line)

Return the text offset after the last visible character (so whitespace is not counted) on the specified line.

float getLineWidth(int line)

Gets the unsigned horizontal extent of the specified line, including leading margin indent and trailing whitespace.

final int getMaxLines()

Return the maximum lines allowed used for creating this layout.

Paint.FontMetrics getMinimumFontMetrics()

Get the minimum font metrics used for line spacing.

int getOffsetForHorizontal(int line, float horiz)

Get the character offset on the specified line whose position is closest to the specified horizontal position.

int getOffsetToLeftOf(int offset)
int getOffsetToRightOf(int offset)
final TextPaint getPaint()

Return the paint used for creating this layout.

final Layout.Alignment getParagraphAlignment(int line)

Get the alignment of the specified paragraph, taking into account markup attached to it.

abstract int getParagraphDirection(int line)

Returns the primary directionality of the paragraph containing the specified line, either 1 for left-to-right lines, or -1 for right-to-left lines (see DIR_LEFT_TO_RIGHT, DIR_RIGHT_TO_LEFT).

final int getParagraphLeft(int line)

Get the left edge of the specified paragraph, inset by left margins.

final int getParagraphRight(int line)

Get the right edge of the specified paragraph, inset by right margins.

float getPrimaryHorizontal(int offset)

Get the primary horizontal position for the specified text offset.

int[] getRangeForRect(RectF area, SegmentFinder segmentFinder, Layout.TextInclusionStrategy inclusionStrategy)

Finds the range of text which is inside the specified rectangle area.

final int[] getRightIndents()

Return a copy of the right indents used for this layout.

float getSecondaryHorizontal(int offset)

Get the secondary horizontal position for the specified text offset.

void getSelectionPath(int start, int end, Path dest)

Fills in the specified Path with a representation of a highlight between the specified offsets.

boolean getShiftDrawingOffsetForStartOverhang()

Returns true if shifting drawing offset for start overhang.

final float getSpacingAdd()

Returns the amount added to the line height.

final float getSpacingMultiplier()

Returns the multiplier applied to the line height.

final CharSequence getText()

Return the text used for creating this layout.

final TextDirectionHeuristic getTextDirectionHeuristic()

Returns the text direction heuristic used for creating this layout.

abstract int getTopPadding()

Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.

boolean getUseBoundsForWidth()

Returns true if using bounding box as a width, false for using advance as a width.

final int getWidth()

Return the width used for creating this layout in pixels.

final void increaseWidthTo(int wid)

Increase the width of this layout to the specified width.

boolean isFallbackLineSpacingEnabled()

Return true if the fallback line space is enabled in this Layout.

final boolean isFontPaddingIncluded()

Returns true if this layout is created with increased line height.

boolean isRtlCharAt(int offset)

Returns true if the character at offset is right to left (RTL).

final boolean isSpanned()
Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

Wakes up a single thread that is waiting on this object's monitor.

final void notifyAll()

Wakes up all threads that are waiting on this object's monitor.

String toString()

Returns a string representation of the object.

final void wait(long timeoutMillis, int nanos)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait(long timeoutMillis)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait()

Causes the current thread to wait until it is awakened, typically by being notified or interrupted.

Public constructors

DynamicLayout

Added in API level 1
public DynamicLayout (CharSequence base, 
                TextPaint paint, 
                int width, 
                Layout.Alignment align, 
                float spacingmult, 
                float spacingadd, 
                boolean includepad)

This constructor is deprecated.
Use Builder instead.

Parameters
base CharSequence: This value cannot be null.

paint TextPaint: This value cannot be null.

width int: Value is 0 or greater

align Layout.Alignment: This value cannot be null.

spacingmult float: Value is 0.0 or greater

spacingadd float

includepad boolean

DynamicLayout

Added in API level 1
public DynamicLayout (CharSequence base, 
                CharSequence display, 
                TextPaint paint, 
                int width, 
                Layout.Alignment align, 
                float spacingmult, 
                float spacingadd, 
                boolean includepad)

This constructor is deprecated.
Use Builder instead.

Parameters
base CharSequence: This value cannot be null.

display CharSequence: This value cannot be null.

paint TextPaint: This value cannot be null.

width int: Value is 0 or greater

align Layout.Alignment: This value cannot be null.

spacingmult float: Value is 0.0 or greater

spacingadd float

includepad boolean

DynamicLayout

Added in API level 1
public DynamicLayout (CharSequence base, 
                CharSequence display, 
                TextPaint paint, 
                int width, 
                Layout.Alignment align, 
                float spacingmult, 
                float spacingadd, 
                boolean includepad, 
                TextUtils.TruncateAt ellipsize, 
                int ellipsizedWidth)

This constructor is deprecated.
Use Builder instead.

Parameters
base CharSequence: This value cannot be null.

display CharSequence: This value cannot be null.

paint TextPaint: This value cannot be null.

width int: Value is 0 or greater

align Layout.Alignment: This value cannot be null.

spacingmult float: Value is 0.0 or greater

spacingadd float

includepad boolean

ellipsize TextUtils.TruncateAt: This value may be null.

ellipsizedWidth int: Value is 0 or greater

Public methods

getBottomPadding

Added in API level 1
public int getBottomPadding ()

Returns the number of extra pixels of descent padding in the bottom line of the Layout.

Returns
int

getEllipsisCount

Added in API level 1
public int getEllipsisCount (int line)

Returns the number of characters to be ellipsized away, or 0 if no ellipsis is to take place.

Parameters
line int

Returns
int

getEllipsisStart

Added in API level 1
public int getEllipsisStart (int line)

Return the offset of the first character to be ellipsized away, relative to the start of the line. (So 0 if the beginning of the line is ellipsized, not getLineStart().)

Parameters
line int

Returns
int

getEllipsizedWidth

Added in API level 1
public int getEllipsizedWidth ()

Return the width to which this layout is ellipsized. If no ellipsize is applied, the same amount of getWidth() is returned.

Returns
int the amount of ellipsized width in pixels. Value is 0 or greater

getLineBreakConfig

Added in API level 35
public LineBreakConfig getLineBreakConfig ()

Gets the LineBreakConfig used in this DynamicLayout. Use this only to consult the LineBreakConfig's properties and not to change them.

Returns
LineBreakConfig The line break config in this DynamicLayout. This value cannot be null.

getLineContainsTab

Added in API level 1
public boolean getLineContainsTab (int line)

Returns whether the specified line contains one or more characters that need to be handled specially, like tabs.

Parameters
line int

Returns
boolean

getLineCount

Added in API level 1
public int getLineCount ()

Return the number of lines of text in this layout.

Returns
int

getLineDescent

Added in API level 1
public int getLineDescent (int line)

Return the descent of the specified line(0…getLineCount() - 1).

Parameters
line int

Returns
int

getLineDirections

Added in API level 1
public final Layout.Directions getLineDirections (int line)

Returns the directional run information for the specified line. The array alternates counts of characters in left-to-right and right-to-left segments of the line.

NOTE: this is inadequate to support bidirectional text, and will change.

Parameters
line int

getLineStart

Added in API level 1
public int getLineStart (int line)

Return the text offset of the beginning of the specified line ( 0…getLineCount()). If the specified line is equal to the line count, returns the length of the text.

Parameters
line int

Returns
int

getLineTop

Added in API level 1
public int getLineTop (int line)

Return the vertical position of the top of the specified line (0…getLineCount()). If the specified line is equal to the line count, returns the bottom of the last line.

Parameters
line int

Returns
int

getParagraphDirection

Added in API level 1
public int getParagraphDirection (int line)

Returns the primary directionality of the paragraph containing the specified line, either 1 for left-to-right lines, or -1 for right-to-left lines (see DIR_LEFT_TO_RIGHT, DIR_RIGHT_TO_LEFT).

Parameters
line int

Returns
int

getTopPadding

Added in API level 1
public int getTopPadding ()

Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.

Returns
int