Builder
class Builder
kotlin.Any | |
↳ | android.text.Layout.Builder |
A builder class for Layout object. Different from StaticLayout.Builder
, this builder generates the optimal layout based on input. If the given text and parameters can be rendered with BoringLayout
, this builder generates BoringLayout
instance. Otherwise, StaticLayout
instance is generated.
Summary
Public constructors | |
---|---|
Construct a builder class. |
Public methods | |
---|---|
Layout |
build() Build a Layout object. |
Layout.Builder |
setAlignment(alignment: Layout.Alignment) Set the text alignment. |
Layout.Builder |
setBreakStrategy(breakStrategy: Int) Set the line break strategy. |
Layout.Builder |
setEllipsize(ellipsize: TextUtils.TruncateAt?) Set the ellipsizing type. |
Layout.Builder |
setEllipsizedWidth(ellipsizeWidth: Int) Set the width as used for ellipsizing purpose in pixels. |
Layout.Builder |
setFallbackLineSpacingEnabled(fallbackLineSpacing: Boolean) Set whether to respect the ascent and descent of the fallback fonts. |
Layout.Builder |
setFontPaddingIncluded(includeFontPadding: Boolean) Set whether including extra padding into the first and the last line height. |
Layout.Builder |
setHyphenationFrequency(hyphenationFrequency: Int) Set the hyphenation frequency. |
Layout.Builder |
setJustificationMode(justificationMode: Int) Set justification mode. |
Layout.Builder |
setLeftIndents(leftIndents: IntArray?) Set visually left indents in pixels per lines. |
Layout.Builder |
setLineBreakConfig(lineBreakConfig: LineBreakConfig) Set the line break configuration. |
Layout.Builder |
setLineSpacingAmount(amount: Float) Set the line spacing amount. |
Layout.Builder |
setLineSpacingMultiplier(multiplier: Float) Set the line spacing multiplier. |
Layout.Builder |
setMaxLines(maxLines: Int) Set the maximum number of lines. |
Layout.Builder |
setMinimumFontMetrics(minimumFontMetrics: Paint.FontMetrics?) Set the minimum font metrics used for line spacing. |
Layout.Builder |
setRightIndents(rightIndents: IntArray?) Set visually right indents in pixels per lines. |
Layout.Builder |
setShiftDrawingOffsetForStartOverhang(shiftDrawingOffsetForStartOverhang: Boolean) Set true for shifting the drawing x offset for showing overhang at the start position. |
Layout.Builder |
setTextDirectionHeuristic(textDirection: TextDirectionHeuristic) Set the text direction heuristics. |
Layout.Builder |
setUseBoundsForWidth(useBoundsForWidth: Boolean) Set true for using width of bounding box as a source of automatic line breaking and drawing. |
Public constructors
Builder
Builder(
text: CharSequence,
start: Int,
end: Int,
paint: TextPaint,
width: Int)
Construct a builder class.
Parameters | |
---|---|
text |
CharSequence: a text to be displayed. This value cannot be null . |
start |
Int: an inclusive start index of the text to be displayed. Value is 0 or greater |
end |
Int: an exclusive end index of the text to be displayed. Value is 0 or greater |
paint |
TextPaint: a paint object to be used for drawing text. This value cannot be null . |
width |
Int: a width constraint in pixels. Value is 0 or greater |
Public methods
build
fun build(): Layout
Build a Layout object.
Return | |
---|---|
Layout |
This value cannot be null . |
setAlignment
fun setAlignment(alignment: Layout.Alignment): Layout.Builder
Set the text alignment. The default value is Layout.Alignment.ALIGN_NORMAL
.
Parameters | |
---|---|
alignment |
Layout.Alignment: an alignment. This value cannot be null . |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setBreakStrategy
fun setBreakStrategy(breakStrategy: Int): Layout.Builder
Set the line break strategy. The default value is Layout.BREAK_STRATEGY_SIMPLE
.
Parameters | |
---|---|
breakStrategy |
Int: a break strategy for line breaking. Value is android.graphics.text.LineBreaker#BREAK_STRATEGY_SIMPLE , android.graphics.text.LineBreaker#BREAK_STRATEGY_HIGH_QUALITY , or android.graphics.text.LineBreaker#BREAK_STRATEGY_BALANCED |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setEllipsize
fun setEllipsize(ellipsize: TextUtils.TruncateAt?): Layout.Builder
Set the ellipsizing type. By setting null, the ellipsize is disabled. The default value is null
.
Parameters | |
---|---|
ellipsize |
TextUtils.TruncateAt?: type of the ellipsize. null for disabling ellipsize. |
Return | |
---|---|
Layout.Builder |
this builder instance. |
setEllipsizedWidth
fun setEllipsizedWidth(ellipsizeWidth: Int): Layout.Builder
Set the width as used for ellipsizing purpose in pixels. The passed value is ignored and forced to set to the value of width constraint passed in constructor if no ellipsize option is set. The default value is the width constraint.
Parameters | |
---|---|
ellipsizeWidth |
Int: a ellipsizing width in pixels. Value is 0 or greater |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setFallbackLineSpacingEnabled
fun setFallbackLineSpacingEnabled(fallbackLineSpacing: Boolean): Layout.Builder
Set whether to respect the ascent and descent of the fallback fonts. Set whether to respect the ascent and descent of the fallback fonts that are used in displaying the text (which is needed to avoid text from consecutive lines running into each other). If set, fallback fonts that end up getting used can increase the ascent and descent of the lines that they are used on. The default value is false
Parameters | |
---|---|
fallbackLineSpacing |
Boolean: whether to expand line height based on fallback fonts. |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setFontPaddingIncluded
fun setFontPaddingIncluded(includeFontPadding: Boolean): Layout.Builder
Set whether including extra padding into the first and the last line height. By setting true, the first line of the text and the last line of the text will have extra vertical space for avoiding clipping. The default value is true
.
Parameters | |
---|---|
includeFontPadding |
Boolean: true for including extra space into first and last line. |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setHyphenationFrequency
fun setHyphenationFrequency(hyphenationFrequency: Int): Layout.Builder
Set the hyphenation frequency. The default value is Layout.HYPHENATION_FREQUENCY_NONE
.
Parameters | |
---|---|
hyphenationFrequency |
Int: a hyphenation frequency. Value is android.text.Layout#HYPHENATION_FREQUENCY_NORMAL , android.text.Layout#HYPHENATION_FREQUENCY_NORMAL_FAST , android.text.Layout#HYPHENATION_FREQUENCY_FULL , android.text.Layout#HYPHENATION_FREQUENCY_FULL_FAST , or android.text.Layout#HYPHENATION_FREQUENCY_NONE |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
See Also
android.text.Layout#getHyphenationFrequency()
android.text.StaticLayout.Builder#setHyphenationFrequency(int)
android.text.Layout#HYPHENATION_FREQUENCY_NONE
android.text.Layout#HYPHENATION_FREQUENCY_NORMAL
android.text.Layout#HYPHENATION_FREQUENCY_FULL
android.text.Layout#HYPHENATION_FREQUENCY_NORMAL_FAST
android.text.Layout#HYPHENATION_FREQUENCY_FULL_FAST
setJustificationMode
fun setJustificationMode(justificationMode: Int): Layout.Builder
Set justification mode. When justification mode is Layout.JUSTIFICATION_MODE_INTER_WORD
, the word spacing on the given Paint passed to the constructor will be ignored. This behavior also affects spans which change the word spacing. The default value is Layout.JUSTIFICATION_MODE_NONE
.
Parameters | |
---|---|
justificationMode |
Int: justification mode. Value is android.graphics.text.LineBreaker#JUSTIFICATION_MODE_NONE , android.graphics.text.LineBreaker#JUSTIFICATION_MODE_INTER_WORD , or android.graphics.text.LineBreaker#JUSTIFICATION_MODE_INTER_CHARACTER |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setLeftIndents
fun setLeftIndents(leftIndents: IntArray?): Layout.Builder
Set visually left indents in pixels per lines. For the lines past the last element in the array, the last element repeats. Passing null for disabling indents. Note that even with the RTL layout, this method reserve spacing at the visually left of the line. The default value is null
.
Parameters | |
---|---|
leftIndents |
IntArray?: array of indents values for the left margins in pixels. This value may be null . |
Return | |
---|---|
Layout.Builder |
this builder instance. |
setLineBreakConfig
fun setLineBreakConfig(lineBreakConfig: LineBreakConfig): Layout.Builder
Set the line break configuration. The default value is a LinebreakConfig instance that has LineBreakConfig.LINE_BREAK_STYLE_NONE
and LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE
.
Parameters | |
---|---|
lineBreakConfig |
LineBreakConfig: the line break configuration This value cannot be null . |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setLineSpacingAmount
fun setLineSpacingAmount(amount: Float): Layout.Builder
Set the line spacing amount. The specified amount of pixels will be added to each line. The default value is 0
. The negative value is allowed for squeezing lines.
Parameters | |
---|---|
amount |
Float: an amount of pixels to be added to line height. |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setLineSpacingMultiplier
fun setLineSpacingMultiplier(multiplier: Float): Layout.Builder
Set the line spacing multiplier. The specified value will be multiplied to each line. The default value is 1
.
Parameters | |
---|---|
multiplier |
Float: a multiplier to be applied to the line height Value is 0 or greater |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setMaxLines
fun setMaxLines(maxLines: Int): Layout.Builder
Set the maximum number of lines. The default value is unlimited.
Parameters | |
---|---|
maxLines |
Int: maximum number of lines in the layout. Value is 1 or greater |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setMinimumFontMetrics
fun setMinimumFontMetrics(minimumFontMetrics: Paint.FontMetrics?): Layout.Builder
Set the minimum font metrics used for line spacing.
null
is the default value. If null
is set or left it as default, the font metrics obtained by Paint.getFontMetricsForLocale(Paint.FontMetrics)
is used.
The minimum meaning here is the minimum value of line spacing: maximum value of Paint.ascent()
, minimum value of Paint.descent()
.
By setting this value, each line will have minimum line spacing regardless of the text rendered. For example, usually Japanese script has larger vertical metrics than Latin script. By setting the metrics obtained by Paint.getFontMetricsForLocale(Paint.FontMetrics)
for Japanese or leave it null
if the Paint's locale is Japanese, the line spacing for Japanese is reserved if the text is an English text. If the vertical metrics of the text is larger than Japanese, for example Burmese, the bigger font metrics is used.
Parameters | |
---|---|
minimumFontMetrics |
Paint.FontMetrics?: A minimum font metrics. Passing null for using the value obtained by Paint.getFontMetricsForLocale(Paint.FontMetrics) |
See Also
android.widget.TextView#setMinimumFontMetrics(Paint.FontMetrics)
android.widget.TextView#getMinimumFontMetrics()
android.text.Layout#getMinimumFontMetrics()
android.text.StaticLayout.Builder#setMinimumFontMetrics(Paint.FontMetrics)
android.text.DynamicLayout.Builder#setMinimumFontMetrics(Paint.FontMetrics)
setRightIndents
fun setRightIndents(rightIndents: IntArray?): Layout.Builder
Set visually right indents in pixels per lines. For the lines past the last element in the array, the last element repeats. Passing null for disabling indents. Note that even with the RTL layout, this method reserve spacing at the visually right of the line. The default value is null
.
Parameters | |
---|---|
rightIndents |
IntArray?: array of indents values for the right margins in pixels. This value may be null . |
Return | |
---|---|
Layout.Builder |
this builder instance. |
setShiftDrawingOffsetForStartOverhang
fun setShiftDrawingOffsetForStartOverhang(shiftDrawingOffsetForStartOverhang: Boolean): Layout.Builder
Set true for shifting the drawing x offset for showing overhang at the start position. This flag is ignored if the getUseBoundsForWidth()
is false. If this value is false, the Layout draws text from the zero even if there is a glyph stroke in a region where the x coordinate is negative. If this value is true, the Layout draws text with shifting the x coordinate of the drawing bounding box. This value is false by default.
Parameters | |
---|---|
shiftDrawingOffsetForStartOverhang |
Boolean: true for shifting the drawing offset for showing the stroke that is in the region where the x coordinate is negative. |
Return | |
---|---|
Layout.Builder |
This value cannot be null . |
setTextDirectionHeuristic
fun setTextDirectionHeuristic(textDirection: TextDirectionHeuristic): Layout.Builder
Set the text direction heuristics. The text direction heuristics is used to resolve text direction on the text. The default value is TextDirectionHeuristics.FIRSTSTRONG_LTR
Parameters | |
---|---|
textDirection |
TextDirectionHeuristic: a text direction heuristic. This value cannot be null . |
Return | |
---|---|
Layout.Builder |
this builder instance. This value cannot be null . |
setUseBoundsForWidth
fun setUseBoundsForWidth(useBoundsForWidth: Boolean): Layout.Builder
Set true for using width of bounding box as a source of automatic line breaking and drawing. If this value is false, the Layout determines the drawing offset and automatic line breaking based on total advances. By setting true, use all joined glyph's bounding boxes as a source of text width. If the font has glyphs that have negative bearing X or its xMax is greater than advance, the glyph clipping can happen because the drawing area may be bigger. By setting this to true, the Layout will reserve more spaces for drawing.
Parameters | |
---|---|
useBoundsForWidth |
Boolean: True for using bounding box, false for advances. |
Return | |
---|---|
Layout.Builder |
this builder instance This value cannot be null . |