Interface LeadingMarginSpan

All Superinterfaces:
ParagraphStyle
All Known Subinterfaces:
LeadingMarginSpan.LeadingMarginSpan2
All Known Implementing Classes:
BulletSpan, CodeBlockSpan, HeadingSpan, LeadingMarginSpan.Standard, NumberSpan, QuoteSpan, ThematicBreakSpan

public interface LeadingMarginSpan extends ParagraphStyle
A paragraph style affecting the leading margin. There can be multiple leading margin spans on a single paragraph; they will be rendered in order, each adding its margin to the ones before it. The leading margin is on the right for lines in a right-to-left paragraph.

LeadingMarginSpans should be attached from the first character to the last character of a single paragraph.

Since 3.8, there's TrailingMarginSpan affecting the trailing margin. Since 3.12, the TrailingMarginSpan is merged into this interface.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    An extended version of LeadingMarginSpan, which allows the implementor to specify the number of lines of the paragraph to which this object is attached that the "first line of paragraph" margin width will be applied to.
    static class 
    The standard implementation of LeadingMarginSpan, which adjusts the margin but does not do any rendering.
  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    drawLeadingMargin(Canvas c, TextPaint 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.
    default void
    drawMargin(Canvas c, TextPaint p, int left, int right, int dir, int top, int baseline, int bottom, Spanned text, int start, int end, boolean first, Layout layout)
    Called when drawing the margin.
    default int
    getLeadingMargin(boolean first)
    Returns the amount by which to adjust the leading margin.
    default int
    getLeadingMargin(TextPaint paint, boolean first)
    Returns the amount by which to adjust the leading margin.
    default int
    Returns the amount by which to adjust the trailing margin.
  • Method Details

    • getLeadingMargin

      @Obsolete @OverrideOnly default 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.

      This method is obsolete in favor of getLeadingMargin(TextPaint, boolean).

      Parameters:
      first - true if the request is for the first line of a paragraph, false for subsequent lines
      Returns:
      the offset for the margin.
    • getLeadingMargin

      default int getLeadingMargin(@NonNull TextPaint paint, 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.

      The leading margin is on the left for lines in a left-to-right paragraph, and on the right for lines in a right-to-left paragraph. The default implementation is to call getLeadingMargin(boolean).

      Added by Modern UI.

      Parameters:
      paint - the base paint (read-only)
      first - true if the request is for the first line of a paragraph, false for subsequent lines
      Returns:
      the offset for the margin.
    • getTrailingMargin

      default int getTrailingMargin(@NonNull TextPaint paint)
      Returns the amount by which to adjust the trailing margin. Positive values move away from the trailing edge of the paragraph, negative values move towards it.

      The trailing margin is on the right for lines in a left-to-right paragraph, and on the left for lines in a right-to-left paragraph.

      Added by Modern UI.

      Parameters:
      paint - the base paint (read-only)
      Returns:
      the offset for the margin.
    • drawLeadingMargin

      @OverrideOnly default void drawLeadingMargin(@NonNull Canvas c, @NonNull TextPaint p, int x, int dir, int top, int baseline, int bottom, @NonNull CharSequence text, int start, int end, boolean first, @NonNull Layout layout)
      Renders the leading margin. This is called before the margin has been adjusted by the value returned by getLeadingMargin(TextPaint, boolean).
      Parameters:
      c - the canvas
      p - the paint. This should be left unchanged on exit.
      x - the current position of the margin
      dir - the base direction of the paragraph; if negative, the margin is to the right of the text, otherwise it is to the left.
      top - the top of the line
      baseline - the baseline of the line
      bottom - the bottom of the line
      text - the text
      start - the start of the line
      end - the end of the line
      first - true if this is the first line of its paragraph
      layout - the layout containing this line
    • drawMargin

      default void drawMargin(@NonNull Canvas c, @NonNull TextPaint p, int left, int right, int dir, int top, int baseline, int bottom, @NonNull Spanned text, int start, int end, boolean first, @NonNull Layout layout)
      Called when drawing the margin.

      The default implementation is to call drawLeadingMargin(icyllis.modernui.graphics.Canvas, icyllis.modernui.text.TextPaint, int, int, int, int, int, java.lang.CharSequence, int, int, boolean, icyllis.modernui.text.Layout), where x is either left or right, depending on dir. This method allows to draw the trailing margin at the same time, not just the leading margin.

      Added by Modern UI.

      Parameters:
      c - the canvas
      p - the paint. This should be left unchanged on exit.
      left - the current left position of the margin
      right - the current right position of the margin
      dir - the base direction of the paragraph; if negative, the margin is to the right of the text, otherwise it is to the left.
      top - the top of the line
      baseline - the baseline of the line
      bottom - the bottom of the line
      text - the text
      start - the start of the line
      end - the end of the line
      first - true if this is the first line of its paragraph
      layout - the layout containing this line