Сделать TextView "\ n" игнорировать создание абзаца - PullRequest
4 голосов
/ 24 февраля 2020

У меня есть такая строка текста с несколькими управляющими символами новой строки.

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, он применяется после каждого символа новой строки.

leading margins

^ Это результат, который я получаю от применения LeadingMarginSpan.

enter image description here

^ И это результат, который я хотел бы получить.

Есть ли способ игнорировать абзацы в TextView, поэтому мы можем просто сделать нормальный разрыв строки?

Ответы [ 3 ]

0 голосов
/ 24 февраля 2020

Это то, что вы ищете?

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 голосов
/ 24 февраля 2020

Вы можете применить LeadingMarginSpan.Standard(inset, 0) из 0 только к первой новой строке, поэтому это не относится к остальным абзацам.

0 голосов
/ 24 февраля 2020

Нет необходимости использовать 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
...