首页 > 解决方案 > 使 TextView "\n" 忽略段落创建

问题描述

我有一个这样的文本字符串,其中包含几个换行符控制字符。

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

当我LeadingMarginSpan在 TextView 上使用时,它适用于每个换​​行符之后。

领先的利润

^ 这是我应用LeadingMarginSpan.

在此处输入图像描述

^ 这就是我想要的结果。

有什么办法可以忽略其中的段落,TextView这样我们就可以正常换行了吗?

标签: androidtextviewspannable

解决方案


这是你要找的吗?

import android.graphics.Canvas
import android.graphics.Paint
import android.text.Layout
import android.text.style.LeadingMarginSpan

class OnlyFirstParagraphSpan : LeadingMarginSpan {

    private var firstLine : Boolean = true
    private var margin : Int = 32

    override fun getLeadingMargin(first: Boolean) = margin

    override fun drawLeadingMargin(c: Canvas, p: Paint, x: Int, dir: Int, top: Int, baseline: Int, bottom: Int, text: CharSequence, start: Int, end: Int, first:
    Boolean, l: Layout) {
        if (firstLine) {
            margin = 32
            firstLine = false
        } else {
            margin = 0
        }
    }
}

推荐阅读