Как указывает вопрос, я работаю над TextView
, который будет отображать форматированный текст, используя SpannableStringBuilder
. Он имеет несколько абзацев, и я хотел бы знать, что было бы самым простым (или, по крайней мере, наименее сложным) способом установить интервал между абзацами, используя некоторый встроенный диапазон. Это возможно? Или мне нужно будет создать для этого специальный класс span?Интервал абзаца с использованием SpannableStringBuilder в TextView
5
A
ответ
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
в конце вашего текста каждого пункта.
Если бы вы могли предоставить реализацию «ILineHeightSpan» для Xamarin, я бы влюбился. – Lara
Примечание: это также повлияет на высоту курсора, если вы используете этот диапазон внутри EditText. – Sver
Плотность TOP_SPACING и BOTTOM_SPACING независима или нет? – BornToCode