BoringLayout
public
class
BoringLayout
extends Layout
implements
TextUtils.EllipsizeCallback
java.lang.Object | ||
↳ | android.text.Layout | |
↳ | android.text.BoringLayout |
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
|
Inherited constants |
---|
Inherited fields |
---|
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)
|
|
BoringLayout(CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth, boolean useFallbackLineSpacing)
|
Public methods | |
---|---|
RectF
|
computeDrawingBoundingBox()
Get an actual bounding box that draws text content. |
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 ellipsized. |
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. |
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()). |
float
|
getLineWidth(int line)
Gets the unsigned horizontal extent of the specified line, including leading margin indent and trailing whitespace. |
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 |
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)
Determine and compute metrics if given text can be handled by BoringLayout. |
static
BoringLayout.Metrics
|
isBoring(CharSequence text, TextPaint paint)
Determine and compute metrics if given text can be handled by BoringLayout. |
static
BoringLayout.Metrics
|
isBoring(CharSequence text, TextPaint paint, TextDirectionHeuristic textDir, boolean useFallbackLineSpacing, 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. |
boolean
|
isFallbackLineSpacingEnabled()
Return true if the fallback line space is enabled in this Layout. |
static
BoringLayout
|
make(CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth, boolean useFallbackLineSpacing)
Utility function to construct a BoringLayout instance. |
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)
Utility function to construct a BoringLayout instance. |
static
BoringLayout
|
make(CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad)
Utility function to construct a BoringLayout instance. |
BoringLayout
|
replaceOrMake(CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth, boolean useFallbackLineSpacing)
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, 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. |
Inherited methods | |
---|---|
Public constructors
BoringLayout
public BoringLayout (CharSequence source, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad)
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerwidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
BoringLayout
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)
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerWidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested outerWidth |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead |
BoringLayout
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, boolean useFallbackLineSpacing)
Parameters | |
---|---|
source |
CharSequence : the text to render
This value cannot be null . |
paint |
TextPaint : the default paint for the layout
This value cannot be null . |
outerWidth |
int : the wrapping width for the text
Value is 0 or greater |
align |
Layout.Alignment : whether to left, right, or center the text
This value cannot be null . |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width
This value cannot be null . |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested outerWidth . null if ellipsis is not applied. |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead
Value is 0 or greater |
useFallbackLineSpacing |
boolean : True for adjusting the line spacing based on fallback fonts.
False for keeping the first font's line height. If some glyphs
requires larger vertical spaces, by passing true to this
argument, the layout increase the line height to fit all glyphs. |
Public methods
computeDrawingBoundingBox
public RectF computeDrawingBoundingBox ()
Get an actual bounding box that draws text content.
Note that the RectF.top
and RectF.bottom
may be different from the
Layout.getLineTop(int)
of the first line and Layout.getLineBottom(int)
of
the last line. The line top and line bottom are calculated based on yMin/yMax or
ascent/descent value of font file. On the other hand, the drawing bounding boxes are
calculated based on actual glyphs used there.
Returns | |
---|---|
RectF |
This value cannot be null . |
draw
public 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.
Parameters | |
---|---|
c |
Canvas : the canvas |
highlight |
Path : the path of the selection highlight or cursor; can be null |
highlightpaint |
Paint : the paint for the selection highlight |
cursorOffset |
int : the amount to temporarily translate the
canvas while rendering the highlight |
ellipsized
public void ellipsized (int start, int end)
Callback for the ellipsizer to report what region it ellipsized.
Parameters | |
---|---|
start |
int |
end |
int |
getBottomPadding
public int getBottomPadding ()
Returns the number of extra pixels of descent padding in the bottom line of the Layout.
Returns | |
---|---|
int |
getEllipsisCount
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
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
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 |
getHeight
public int getHeight ()
Return the total height of this layout.
Returns | |
---|---|
int |
getLineContainsTab
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
public int getLineCount ()
Return the number of lines of text in this layout.
Returns | |
---|---|
int |
getLineDescent
public int getLineDescent (int line)
Return the descent of the specified line(0…getLineCount() - 1).
Parameters | |
---|---|
line |
int |
Returns | |
---|---|
int |
getLineDirections
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 |
Returns | |
---|---|
Layout.Directions |
getLineMax
public 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 |
getLineStart
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
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 |
getLineWidth
public 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 |
getParagraphDirection
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
public int getTopPadding ()
Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.
Returns | |
---|---|
int |
isBoring
public static BoringLayout.Metrics isBoring (CharSequence text, TextPaint paint, BoringLayout.Metrics metrics)
Determine and compute metrics if given text can be handled by BoringLayout.
Parameters | |
---|---|
text |
CharSequence : a text |
paint |
TextPaint : a paint |
metrics |
BoringLayout.Metrics : a metrics object to be recycled. If null is passed, this function creat new
object. |
Returns | |
---|---|
BoringLayout.Metrics |
layout metric for the given text. If metrics is not null, this method fills values to given metrics object instead of allocating new metrics object. null if given text is unable to be handled by BoringLayout. |
isBoring
public static BoringLayout.Metrics isBoring (CharSequence text, TextPaint paint)
Determine and compute metrics if given text can be handled by BoringLayout.
Parameters | |
---|---|
text |
CharSequence : a text |
paint |
TextPaint : a paint |
Returns | |
---|---|
BoringLayout.Metrics |
layout metric for the given text. null if given text is unable to be handled by BoringLayout. |
isBoring
public static BoringLayout.Metrics isBoring (CharSequence text, TextPaint paint, TextDirectionHeuristic textDir, boolean useFallbackLineSpacing, 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.
Parameters | |
---|---|
text |
CharSequence : a text to be calculated text layout.
This value cannot be null . |
paint |
TextPaint : a paint object used for styling.
This value cannot be null . |
textDir |
TextDirectionHeuristic : a text direction.
This value cannot be null . |
useFallbackLineSpacing |
boolean : True for adjusting the line spacing based on fallback fonts.
False for keeping the first font's line height. If some glyphs
requires larger vertical spaces, by passing true to this
argument, the layout increase the line height to fit all glyphs. |
metrics |
BoringLayout.Metrics : the out metrics.
This value may be null . |
Returns | |
---|---|
BoringLayout.Metrics |
metrics on success. null if text cannot be rendered by BoringLayout. |
isFallbackLineSpacingEnabled
public boolean isFallbackLineSpacingEnabled ()
Return true if the fallback line space is enabled in this Layout.
Returns | |
---|---|
boolean |
true if the fallback line space is enabled. Otherwise, returns false. |
make
public static BoringLayout make (CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth, boolean useFallbackLineSpacing)
Utility function to construct a BoringLayout instance.
The spacing multiplier and additional amount spacing are not used by BoringLayout.
Layout.getSpacingMultiplier()
will return 1.0 and Layout.getSpacingAdd()
will
return 0.0.
Parameters | |
---|---|
source |
CharSequence : the text to render
This value cannot be null . |
paint |
TextPaint : the default paint for the layout
This value cannot be null . |
outerWidth |
int : the wrapping width for the text
Value is 0 or greater |
align |
Layout.Alignment : whether to left, right, or center the text
This value cannot be null . |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width
This value cannot be null . |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested width. null if ellipsis is not applied. |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead
Value is 0 or greater |
useFallbackLineSpacing |
boolean : True for adjusting the line spacing based on fallback fonts.
False for keeping the first font's line height. If some glyphs
requires larger vertical spaces, by passing true to this
argument, the layout increase the line height to fit all glyphs. |
Returns | |
---|---|
BoringLayout |
This value cannot be null . |
make
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)
Utility function to construct a BoringLayout instance.
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerWidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingmult |
float : this value is no longer used by BoringLayout |
spacingadd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested width |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead |
Returns | |
---|---|
BoringLayout |
make
public static BoringLayout make (CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad)
Utility function to construct a BoringLayout instance.
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerWidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
Returns | |
---|---|
BoringLayout |
replaceOrMake
public BoringLayout replaceOrMake (CharSequence source, TextPaint paint, int outerWidth, Layout.Alignment align, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth, boolean useFallbackLineSpacing)
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.
The spacing multiplier and additional amount spacing are not used by BoringLayout.
Layout.getSpacingMultiplier()
will return 1.0 and Layout.getSpacingAdd()
will
return 0.0.
Parameters | |
---|---|
source |
CharSequence : the text to render
This value cannot be null . |
paint |
TextPaint : the default paint for the layout
This value cannot be null . |
outerWidth |
int : the wrapping width for the text
Value is 0 or greater |
align |
Layout.Alignment : whether to left, right, or center the text
This value cannot be null . |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width
This value cannot be null . |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested width. null if ellipsis not applied. |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead
Value is 0 or greater |
useFallbackLineSpacing |
boolean : True for adjusting the line spacing based on fallback fonts.
False for keeping the first font's line height. If some glyphs
requires larger vertical spaces, by passing true to this
argument, the layout increase the line height to fit all glyphs. |
Returns | |
---|---|
BoringLayout |
This value cannot be null . |
replaceOrMake
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)
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.
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerWidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
ellipsize |
TextUtils.TruncateAt : whether to ellipsize the text if width of the text is longer than the
requested width |
ellipsizedWidth |
int : the width to which this Layout is ellipsizing. If ellipsize is
null , or is TextUtils.TruncateAt.MARQUEE this value is
not used, outerWidth is used instead |
Returns | |
---|---|
BoringLayout |
replaceOrMake
public 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. The caller must make sure that no one is still using this Layout.
Parameters | |
---|---|
source |
CharSequence : the text to render |
paint |
TextPaint : the default paint for the layout |
outerwidth |
int : the wrapping width for the text |
align |
Layout.Alignment : whether to left, right, or center the text |
spacingMult |
float : this value is no longer used by BoringLayout |
spacingAdd |
float : this value is no longer used by BoringLayout |
metrics |
BoringLayout.Metrics : #Metrics instance that contains information about FontMetrics and
line width |
includePad |
boolean : set whether to include extra space beyond font ascent and descent which is
needed to avoid clipping in some scripts |
Returns | |
---|---|
BoringLayout |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-12-18 UTC.