LeadingMarginSpan2 – как ограничить количество абзацев с краем

Я использую базовую и очень распространенную реализацию LeadingMarginSpan2 для обертывания текста вокруг изображения (так как это, кажется, самый простой способ и, пожалуйста, не предлагайте мне использовать WebView s на данный момент):

  public class MyLeadingMarginSpan2 implements LeadingMarginSpan.LeadingMarginSpan2 { private int margin; private int lines; public MyLeadingMarginSpan2(int lines, int margin) { this.margin = margin; this.lines = lines; } @Override public int getLeadingMargin(boolean first) { return first ? margin : 0; // <--- the issue is here } @Override 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) { } @Override public int getLeadingMarginLineCount() { return lines; } } 

Проблема заключается в том, что, как только абзац появляется в тексте, в эту строку указывается нежелательный запас. Я хочу ограничить количество раз, когда getLeadingMargin() возвращает фактическое поле в число строк, переданных внутри конструктора.

Я попытался подсчитать, сколько раз возвращалась эта маржа и сравнивала ее с количеством строк, однако это не сработало (в большинстве случаев маржа не применялась, в некоторых случаях она применялась к неправильному числу строк) ,

У кого-нибудь есть обходной путь для этой проблемы?