在 TextView 中使用 SpannableStringBuilder 的段落间距
Posted
技术标签:
【中文标题】在 TextView 中使用 SpannableStringBuilder 的段落间距【英文标题】:Paragraph spacings using SpannableStringBuilder in TextView 【发布时间】:2014-11-04 17:33:46 【问题描述】:正如问题所示,我正在处理TextView
,它将使用SpannableStringBuilder
显示格式化文本。它有多个段落,我想知道使用一些内置跨度设置段落之间的间距的最简单(或至少最不复杂)的方法是什么。这可能吗?或者我是否需要为此构建一个自定义跨度类?
【问题讨论】:
【参考方案1】:实现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
。
【讨论】:
如果你能为 Xamarin 提供ILineHeightSpan
的实现,我会爱上的。
注意:如果您在 EditText 中使用此跨度,这也会影响光标高度。
TOP_SPACING 和 BOTTOM_SPACING 密度是否独立?以上是关于在 TextView 中使用 SpannableStringBuilder 的段落间距的主要内容,如果未能解决你的问题,请参考以下文章
带有SpannableString的Android Canvas drawText
在其他方法 Android 中使用 Textview.setText
在 TextView 中使用 SpannableStringBuilder 的段落间距