android - 在 TextView 中使用 SpannableStringBuilder 的段落间距

标签 android textview spannablestring spannable

如问题所示,我正在开发一个 TextView,它将使用 SpannableStringBuilder 显示格式化文本。它有多个段落,我想知道使用一些内置跨度设置段落间距的最简单(或至少最不复杂)的方法是什么。这可能吗?或者我需要为此构建一个自定义跨度类吗?

最佳答案

实现 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

关于android - 在 TextView 中使用 SpannableStringBuilder 的段落间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776082/

相关文章:

Android:锁屏上的默认音乐播放器小部件

java.lang.OutOfMemoryError : bitmap size exceeds VM budget in Swipey-Viewpager 错误

android - XML 中的 TextInputEditText requestFocus 导致呈现问题

android - 在 android 中处理 SpannableStringBuilder 图像

android - 带有 ImageSpan 的 TextView 弄乱了行高

java - Android SpannableString(Builder) 不应用样式

android - 使用 google api : android 获取酒吧和餐馆的位置

Android 文本对齐 - Pixel Perfect

java - 以编程方式添加 TextView

java - 将API数据解析到TextView中