lightbulb_outline Please take our October 2018 developer survey. Start survey
added in API level 1

DrawableMarginSpan

public class DrawableMarginSpan
extends Object implements LeadingMarginSpan, LineHeightSpan

java.lang.Object
   ↳ android.text.style.DrawableMarginSpan


A span which adds a drawable and a padding to the paragraph it's attached to.

If the height of the drawable is bigger than the height of the line it's attached to then the line height is increased to fit the drawable. DrawableMarginSpan allows setting a padding between the drawable and the text. The default value is 0. The span must be set from the beginning of the text, otherwise either the span won't be rendered or it will be rendered incorrectly.

For example, a drawable and a padding of 20px can be added like this:

SpannableString string = new SpannableString("Text with a drawable.");
 string.setSpan(new DrawableMarginSpan(drawable, 20), 0, string.length(),
 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Text with a drawable and a padding.

Summary

Public constructors

DrawableMarginSpan(Drawable drawable)

Creates a DrawableMarginSpan from a Drawable.

DrawableMarginSpan(Drawable drawable, int pad)

Creates a DrawableMarginSpan from a Drawable and a padding, in pixels.

Public methods

void chooseHeight(CharSequence text, int start, int end, int istartv, int v, Paint.FontMetricsInt fm)

Classes that implement this should define how the height is being calculated.

void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout)

Renders the leading margin.

int getLeadingMargin(boolean first)

Returns the amount by which to adjust the leading margin.

Inherited methods

Public constructors

DrawableMarginSpan

added in API level 1
public DrawableMarginSpan (Drawable drawable)

Creates a DrawableMarginSpan from a Drawable. The pad width will be 0.

Parameters
drawable Drawable: the drawable to be added

This value must never be null.

DrawableMarginSpan

added in API level 1
public DrawableMarginSpan (Drawable drawable, 
                int pad)

Creates a DrawableMarginSpan from a Drawable and a padding, in pixels.

Parameters
drawable Drawable: the drawable to be added

This value must never be null.

pad int: the distance between the drawable and the text

Public methods

chooseHeight

added in API level 1
public void chooseHeight (CharSequence text, 
                int start, 
                int end, 
                int istartv, 
                int v, 
                Paint.FontMetricsInt fm)

Classes that implement this should define how the height is being calculated.

Parameters
text CharSequence: the text

This value must never be null.

start int: the start of the line

end int: the end of the line

istartv int: the start of the span

v int: the line height

fm Paint.FontMetricsInt: font metrics of the paint, in integers

This value must never be null.

drawLeadingMargin

added in API level 1
public void drawLeadingMargin (Canvas c, 
                Paint p, 
                int x, 
                int dir, 
                int top, 
                int baseline, 
                int bottom, 
                CharSequence text, 
                int start, 
                int end, 
                boolean first, 
                Layout layout)

Renders the leading margin. This is called before the margin has been adjusted by the value returned by getLeadingMargin(boolean).

Parameters
c Canvas: the canvas

This value must never be null.

p Paint: the paint. The this should be left unchanged on exit.

This value must never be null.

x int: the current position of the margin

dir int: the base direction of the paragraph; if negative, the margin is to the right of the text, otherwise it is to the left.

top int: the top of the line

baseline int: the baseline of the line

bottom int: the bottom of the line

text CharSequence: the text

This value must never be null.

start int: the start of the line

end int: the end of the line

first boolean: true if this is the first line of its paragraph

layout Layout: the layout containing this line

This value must never be null.

getLeadingMargin

added in API level 1
public int getLeadingMargin (boolean first)

Returns the amount by which to adjust the leading margin. Positive values move away from the leading edge of the paragraph, negative values move towards it.

Parameters
first boolean: true if the request is for the first line of a paragraph, false for subsequent lines

Returns
int the offset for the margin.