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

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

  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() возвращает фактическое поле на количество строк, переданных внутри конструктора.

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

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

0 ответов

Другие вопросы по тегам