to top
Android APIs
public class

BoringLayout

extends Layout
implements TextUtils.EllipsizeCallback
java.lang.Object
   ↳ android.text.Layout
     ↳ android.text.BoringLayout

Class Overview

A BoringLayout is a very simple Layout implementation for text that fits on a single line and is all left-to-right characters. You will probably never want to make one of these yourself; if you do, be sure to call isBoring(CharSequence, TextPaint) first to make sure the text meets the criteria.

This class 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, in which case you are encouraged to use a Layout instead of calling Canvas.drawText() directly.

Summary

Nested Classes
class BoringLayout.Metrics  
[Expand]
Inherited Constants
From class android.text.Layout
Public Constructors
BoringLayout(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)
BoringLayout(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)
Public Methods
void draw(Canvas c, Path highlight, Paint highlightpaint, int cursorOffset)
Draw this Layout on the specified canvas, with the highlight path drawn between the background and the text.
void ellipsized(int start, int end)
Callback for the ellipsizer to report what region it ellipsized.
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 ellipsizing, or getWidth() if it is not doing anything special.
int getHeight()
Return the total height of this layout.
boolean getLineContainsTab(int line)
Returns whether the specified line contains one or more characters that need to be handled specially, like tabs or emoji.
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.
float getLineMax(int line)
Gets the unsigned horizontal extent of the specified line, including leading margin indent, but excluding trailing whitespace.
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.
static BoringLayout.Metrics isBoring(CharSequence text, TextPaint paint, BoringLayout.Metrics metrics)
Returns null if not boring; the width, ascent, and descent in the provided Metrics object (or a new one if the provided one was null) if boring.
static BoringLayout.Metrics isBoring(CharSequence text, TextPaint paint)
Returns null if not boring; the width, ascent, and descent if boring.
static BoringLayout make(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)
static BoringLayout make(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)
BoringLayout replaceOrMake(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)
Returns a BoringLayout for the specified text, potentially reusing this one if it is already suitable.
BoringLayout replaceOrMake(CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)
Returns a BoringLayout for the specified text, potentially reusing this one if it is already suitable.
[Expand]
Inherited Methods
From class android.text.Layout
From class java.lang.Object
From interface android.text.TextUtils.EllipsizeCallback

Public Constructors

public BoringLayout (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)

Added in API level 1

public BoringLayout (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)

Added in API level 1

Public Methods

public void draw (Canvas c, Path highlight, Paint highlightpaint, int cursorOffset)

Added in API level 1

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

Parameters
c the canvas
highlight the path of the highlight or cursor; can be null
highlightpaint the paint for the highlight
cursorOffset the amount to temporarily translate the canvas while rendering the highlight

public void ellipsized (int start, int end)

Added in API level 1

Callback for the ellipsizer to report what region it ellipsized.

public int getBottomPadding ()

Added in API level 1

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

public int getEllipsisCount (int line)

Added in API level 1

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

public int getEllipsisStart (int line)

Added in API level 1

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().)

public int getEllipsizedWidth ()

Added in API level 1

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

public int getHeight ()

Added in API level 1

Return the total height of this layout.

public boolean getLineContainsTab (int line)

Added in API level 1

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

public int getLineCount ()

Added in API level 1

Return the number of lines of text in this layout.

public int getLineDescent (int line)

Added in API level 1

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

public final Layout.Directions getLineDirections (int line)

Added in API level 1

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.

public float getLineMax (int line)

Added in API level 1

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

public int getLineStart (int line)

Added in API level 1

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.

public int getLineTop (int line)

Added in API level 1

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.

public int getParagraphDirection (int line)

Added in API level 1

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

public int getTopPadding ()

Added in API level 1

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

public static BoringLayout.Metrics isBoring (CharSequence text, TextPaint paint, BoringLayout.Metrics metrics)

Added in API level 1

Returns null if not boring; the width, ascent, and descent in the provided Metrics object (or a new one if the provided one was null) if boring.

public static BoringLayout.Metrics isBoring (CharSequence text, TextPaint paint)

Added in API level 1

Returns null if not boring; the width, ascent, and descent if boring.

public static BoringLayout make (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)

Added in API level 1

public static BoringLayout make (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)

Added in API level 1

public BoringLayout replaceOrMake (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)

Added in API level 1

Returns a BoringLayout for the specified text, potentially reusing this one if it is already suitable. The caller must make sure that no one is still using this Layout.

public BoringLayout replaceOrMake (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includepad)

Added in API level 1

Returns a BoringLayout for the specified text, potentially reusing this one if it is already suitable. The caller must make sure that no one is still using this Layout.