Skip to content

Most visited

Recently visited

navigation
Added in API level 1

Layout

public abstract class Layout
extends Object

java.lang.Object
   ↳ android.text.Layout
Known Direct Subclasses


A base class that manages text layout in visual elements on the screen.

For text that will be edited, use a DynamicLayout, which will be updated as the text changes. For text that will not change, use a StaticLayout.

Summary

Nested classes

enum Layout.Alignment

 

class Layout.Directions

Stores information about bidirectional (left-to-right or right-to-left) text within the layout of a line. 

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.

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_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.

Protected constructors

Layout(CharSequence text, TextPaint paint, int width, Layout.Alignment align, float spacingMult, float spacingAdd)

Subclasses of Layout use this constructor to set the display text, width, and other standard properties.

Public methods

void draw(Canvas c)

Draw this Layout on the specified Canvas.

void draw(Canvas canvas, Path highlight, Paint highlightPaint, int cursorOffsetVertical)

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

final Layout.Alignment getAlignment()

Return the base alignment of this layout.

abstract int getBottomPadding()

Returns the number of extra pixels of descent padding in the bottom line of the 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, 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.

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.

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.

int getEllipsizedWidth()

Return the width to which this Layout is ellipsizing, or getWidth() if it is not doing anything special.

int getHeight()

Return the total height of 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.

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.

abstract boolean getLineContainsTab(int line)

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

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.

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.

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.

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 base Paint properties for 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.

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.

final float getSpacingAdd()

Return the number of units of leading that are added to each line.

final float getSpacingMultiplier()

Return what the text height is multiplied by to get the line height.

final CharSequence getText()

Return the text that is displayed by this Layout.

abstract int getTopPadding()

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

final int getWidth()

Return the width of this layout.

final void increaseWidthTo(int wid)

Increase the width of this layout to the specified width.

boolean isRtlCharAt(int offset)

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

Protected methods

final boolean isSpanned()

Inherited methods

From class java.lang.Object

Constants

BREAK_STRATEGY_BALANCED

Added in API level 23
int BREAK_STRATEGY_BALANCED

Value for break strategy indicating balanced line breaking. The breaks are chosen to make all lines as close to the same length as possible, including automatic hyphenation.

Constant Value: 2 (0x00000002)

BREAK_STRATEGY_HIGH_QUALITY

Added in API level 23
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.

Constant Value: 1 (0x00000001)

BREAK_STRATEGY_SIMPLE

Added in API level 23
int BREAK_STRATEGY_SIMPLE

Value for break strategy indicating simple line breaking. Automatic hyphens are not added (though soft hyphens are respected), and modifying text generally doesn't affect the layout before it (which yields a more consistent user experience when editing), but layout may not be the highest quality.

Constant Value: 0 (0x00000000)

DIR_LEFT_TO_RIGHT

Added in API level 1
int DIR_LEFT_TO_RIGHT

Constant Value: 1 (0x00000001)

DIR_RIGHT_TO_LEFT

Added in API level 1
int DIR_RIGHT_TO_LEFT

Constant Value: -1 (0xffffffff)

HYPHENATION_FREQUENCY_FULL

Added in API level 23
int HYPHENATION_FREQUENCY_FULL

Value for hyphenation frequency indicating the full amount of automatic hyphenation, typical in typography. Useful for running text and where it's important to put the maximum amount of text in a screen with limited space.

Constant Value: 2 (0x00000002)

HYPHENATION_FREQUENCY_NONE

Added in API level 23
int HYPHENATION_FREQUENCY_NONE

Value for hyphenation frequency indicating no automatic hyphenation. Useful for backward compatibility, and for cases where the automatic hyphenation algorithm results in incorrect hyphenation. Mid-word breaks may still happen when a word is wider than the layout and there is otherwise no valid break. Soft hyphens are ignored and will not be used as suggestions for potential line breaks.

Constant Value: 0 (0x00000000)

HYPHENATION_FREQUENCY_NORMAL

Added in API level 23
int HYPHENATION_FREQUENCY_NORMAL

Value for hyphenation frequency indicating a light amount of automatic hyphenation, which is a conservative default. Useful for informal cases, such as short sentences or chat messages.

Constant Value: 1 (0x00000001)

Protected constructors

Layout

Added in API level 1
Layout (CharSequence text, 
                TextPaint paint, 
                int width, 
                Layout.Alignment align, 
                float spacingMult, 
                float spacingAdd)

Subclasses of Layout use this constructor to set the display text, width, and other standard properties.

Parameters
text CharSequence: the text to render
paint TextPaint: the default paint for the layout. Styles can override various attributes of the paint.
width int: the wrapping width for the text.
align Layout.Alignment: whether to left, right, or center the text. Styles can override the alignment.
spacingMult float: factor by which to scale the font size to get the default line spacing
spacingAdd float: amount to add to the default line spacing

Public methods

draw

Added in API level 1
void draw (Canvas c)

Draw this Layout on the specified Canvas.

Parameters
c Canvas

draw

Added in API level 1
void draw (Canvas canvas, 
                Path highlight, 
                Paint highlightPaint, 
                int cursorOffsetVertical)

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

Parameters
canvas Canvas: the canvas
highlight Path: the path of the highlight or cursor; can be null
highlightPaint Paint: the paint for the highlight
cursorOffsetVertical int: the amount to temporarily translate the canvas while rendering the highlight

getAlignment

Added in API level 1
Layout.Alignment getAlignment ()

Return the base alignment of this layout.

Returns
Layout.Alignment

getBottomPadding

Added in API level 1
int getBottomPadding ()

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

Returns
int

getCursorPath

Added in API level 1
void getCursorPath (int point, 
                Path dest, 
                CharSequence editingBuffer)

Fills in the specified Path with a representation of a cursor at the specified offset. This will often be a vertical line but can be multiple discontinuous lines in text with multiple directionalities.

Parameters
point int
dest Path
editingBuffer CharSequence

getDesiredWidth

Added in API level 1
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.

Parameters
source CharSequence
start int
end int
paint TextPaint
Returns
float

getDesiredWidth

Added in API level 1
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.

Parameters
source CharSequence
paint TextPaint
Returns
float

getEllipsisCount

Added in API level 1
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
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
int getEllipsizedWidth ()

Return the width to which this Layout is ellipsizing, or getWidth() if it is not doing anything special.

Returns
int

getHeight

Added in API level 1
int getHeight ()

Return the total height of this layout.

Returns
int

getLineAscent

Added in API level 1
int getLineAscent (int line)

Get the ascent of the text on the specified line. The return value is negative to match the Paint.ascent() convention.

Parameters
line int
Returns
int

getLineBaseline

Added in API level 1
int getLineBaseline (int line)

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

Parameters
line int
Returns
int

getLineBottom

Added in API level 1
int getLineBottom (int line)

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

Parameters
line int
Returns
int

getLineBounds

Added in API level 1
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.

Parameters
line int: which line to examine (0..getLineCount() - 1)
bounds Rect: Optional. If not null, it returns the extent of the line
Returns
int the Y-coordinate of the baseline

getLineContainsTab

Added in API level 1
boolean getLineContainsTab (int line)

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

Parameters
line int
Returns
boolean

getLineCount

Added in API level 1
int getLineCount ()

Return the number of lines of text in this layout.

Returns
int

getLineDescent

Added in API level 1
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
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
Returns
Layout.Directions

getLineEnd

Added in API level 1
int getLineEnd (int line)

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

Parameters
line int
Returns
int

getLineForOffset

Added in API level 1
int getLineForOffset (int offset)

Get the line number on which the specified text offset appears. If you ask for a position before 0, you get 0; if you ask for a position beyond the end of the text, you get the last line.

Parameters
offset int
Returns
int

getLineForVertical

Added in API level 1
int getLineForVertical (int vertical)

Get the line number corresponding to the specified vertical position. If you ask for a position above 0, you get 0; if you ask for a position below the bottom of the text, you get the last line.

Parameters
vertical int
Returns
int

getLineLeft

Added in API level 1
float getLineLeft (int line)

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

Parameters
line int
Returns
float

getLineMax

Added in API level 1
float getLineMax (int line)

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

Parameters
line int
Returns
float

getLineRight

Added in API level 1
float getLineRight (int line)

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

Parameters
line int
Returns
float

getLineStart

Added in API level 1
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
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

getLineVisibleEnd

Added in API level 1
int getLineVisibleEnd (int line)

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

Parameters
line int
Returns
int

getLineWidth

Added in API level 1
float getLineWidth (int line)

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

Parameters
line int
Returns
float

getOffsetForHorizontal

Added in API level 1
int getOffsetForHorizontal (int line, 
                float horiz)

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

Parameters
line int
horiz float
Returns
int

getOffsetToLeftOf

Added in API level 1
int getOffsetToLeftOf (int offset)

Parameters
offset int
Returns
int

getOffsetToRightOf

Added in API level 1
int getOffsetToRightOf (int offset)

Parameters
offset int
Returns
int

getPaint

Added in API level 1
TextPaint getPaint ()

Return the base Paint properties for this layout. Do NOT change the paint, which may result in funny drawing for this layout.

Returns
TextPaint

getParagraphAlignment

Added in API level 1
Layout.Alignment getParagraphAlignment (int line)

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

Parameters
line int
Returns
Layout.Alignment

getParagraphDirection

Added in API level 1
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

getParagraphLeft

Added in API level 1
int getParagraphLeft (int line)

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

Parameters
line int
Returns
int

getParagraphRight

Added in API level 1
int getParagraphRight (int line)

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

Parameters
line int
Returns
int

getPrimaryHorizontal

Added in API level 1
float getPrimaryHorizontal (int offset)

Get the primary horizontal position for the specified text offset. This is the location where a new character would be inserted in the paragraph's primary direction.

Parameters
offset int
Returns
float

getSecondaryHorizontal

Added in API level 1
float getSecondaryHorizontal (int offset)

Get the secondary horizontal position for the specified text offset. This is the location where a new character would be inserted in the direction other than the paragraph's primary direction.

Parameters
offset int
Returns
float

getSelectionPath

Added in API level 1
void getSelectionPath (int start, 
                int end, 
                Path dest)

Fills in the specified Path with a representation of a highlight between the specified offsets. This will often be a rectangle or a potentially discontinuous set of rectangles. If the start and end are the same, the returned path is empty.

Parameters
start int
end int
dest Path

getSpacingAdd

Added in API level 1
float getSpacingAdd ()

Return the number of units of leading that are added to each line.

Returns
float

getSpacingMultiplier

Added in API level 1
float getSpacingMultiplier ()

Return what the text height is multiplied by to get the line height.

Returns
float

getText

Added in API level 1
CharSequence getText ()

Return the text that is displayed by this Layout.

Returns
CharSequence

getTopPadding

Added in API level 1
int getTopPadding ()

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

Returns
int

getWidth

Added in API level 1
int getWidth ()

Return the width of this layout.

Returns
int

increaseWidthTo

Added in API level 1
void increaseWidthTo (int wid)

Increase the width of this layout to the specified width. Be careful to use this only when you know it is appropriate— it does not cause the text to reflow to use the full new width.

Parameters
wid int

isRtlCharAt

Added in API level 14
boolean isRtlCharAt (int offset)

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

Parameters
offset int: the offset
Returns
boolean true if the character is RTL, false if it is LTR

Protected methods

isSpanned

Added in API level 1
boolean isSpanned ()

Returns
boolean
This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.