使 TextView "\n" 忽略段落创建

Make TextView "\n" ignore paragraph creation

我有一串这样的文本,只有很少的换行控制字符。

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.

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

^ 这是我应用 LeadingMarginSpan.

得到的结果

^ 这就是我想要的结果。

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

不需要使用LeadingMarginSpan。您可以在文本的开头添加“\t”:

val text = "\t" + "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."
text_view.text = text

这是您要找的吗?

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
        }
    }
}

您只能将 0 中的 LeadingMarginSpan.Standard(inset, 0) 应用到新行的第一行,因此它不适用于其余段落。