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()
возвращает фактическое поле на количество строк, переданных внутри конструктора.
Я попытался подсчитать, сколько раз было возвращено это поле, и сравнить его с количеством строк, однако это не сработало (в большинстве случаев поле не применялось, в некоторых случаях оно применялось к неправильному количеству строк).,
У кого-нибудь есть решение этой проблемы?