5

Как указывает вопрос, я работаю над TextView, который будет отображать форматированный текст, используя SpannableStringBuilder. Он имеет несколько абзацев, и я хотел бы знать, что было бы самым простым (или, по крайней мере, наименее сложным) способом установить интервал между абзацами, используя некоторый встроенный диапазон. Это возможно? Или мне нужно будет создать для этого специальный класс span?Интервал абзаца с использованием SpannableStringBuilder в TextView

ответ

6

Реализовать LineHeightSpan и переопределить chooseHeight метод следующим

@Override 
public void chooseHeight(CharSequence text, int start, int end, 
     int spanstartv, int v, FontMetricsInt fm) { 
    Spanned spanned = (Spanned) text; 
    int st = spanned.getSpanStart(this); 
    int en = spanned.getSpanEnd(this); 
    if (start == st) { 
     fm.ascent -= TOP_SPACING; 
     fm.top -= TOP_SPACING; 
    } 
    if (end == en) { 
     fm.descent += BOTTOM_SPACING; 
     fm.bottom += BOTTOM_SPACING; 
    } 
} 

Не забудьте добавить \n в конце вашего текста каждого пункта.

+0

Если бы вы могли предоставить реализацию «ILineHeightSpan» для Xamarin, я бы влюбился. – Lara

+2

Примечание: это также повлияет на высоту курсора, если вы используете этот диапазон внутри EditText. – Sver

+0

Плотность TOP_SPACING и BOTTOM_SPACING независима или нет? – BornToCode

Смежные вопросы