【问题标题】:Paragraph spacings using SpannableStringBuilder in TextView在 TextView 中使用 SpannableStringBuilder 的段落间距
【发布时间】:2014-11-04 17:33:46
【问题描述】:

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

【问题讨论】:

    标签: android textview spannablestring spannable


    【解决方案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 密度是否独立?
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多