Textview Android Kotlin中的订单列表

Textview Android Kotlin中的订单列表,android,kotlin,textview,android-canvas,drawtext,Android,Kotlin,Textview,Android Canvas,Drawtext,嘿,我想在android Kotlin的textview中显示订单列表中的文本。我试过了。我试过这里的代码,它可以正常工作,但是它与数字和文本的高度不匹配。我将分享我迄今为止所做的代码 NumberIndentSpan.kt import android.graphics.Canvas import android.graphics.Paint import android.text.Layout import android.text.style.LeadingMarginSpan clas

嘿,我想在android Kotlin的textview中显示订单列表中的文本。我试过了。我试过这里的代码,它可以正常工作,但是它与数字文本的高度不匹配。我将分享我迄今为止所做的代码

NumberIndentSpan.kt

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

class NumberIndentSpan(
    private val leadWidth: Int,
    private val gapWidth: Int,
    private val index: Int
) : LeadingMarginSpan {

    override fun getLeadingMargin(first: Boolean): Int = leadWidth + gapWidth

    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,
        layout: Layout?
    ) {
        if (first) {
            val orgStyle = p!!.style
            p.style = Paint.Style.FILL
            val width = p.measureText("4.")
            c!!.drawText("$index.", (leadWidth + x - width / 2) * dir, bottom - p.descent(), p)
            p.style = orgStyle
        }
    }
}
 val list = mutableListOf(
                "Log in Google account\n",
                "Scroll to the page\n",
                "Tap disconnect from account to logout"
            )
            var number = 1
            val builder = SpannableStringBuilder()
            for (text in list) {
                val contentStart: Int = builder.length
                builder.append(text)
                builder.setSpan(NumberIndentSpan(15, 15, number), contentStart, builder.length, 0)
                number++
            }
            textView.text = builder
MainActivity.kt

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

class NumberIndentSpan(
    private val leadWidth: Int,
    private val gapWidth: Int,
    private val index: Int
) : LeadingMarginSpan {

    override fun getLeadingMargin(first: Boolean): Int = leadWidth + gapWidth

    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,
        layout: Layout?
    ) {
        if (first) {
            val orgStyle = p!!.style
            p.style = Paint.Style.FILL
            val width = p.measureText("4.")
            c!!.drawText("$index.", (leadWidth + x - width / 2) * dir, bottom - p.descent(), p)
            p.style = orgStyle
        }
    }
}
 val list = mutableListOf(
                "Log in Google account\n",
                "Scroll to the page\n",
                "Tap disconnect from account to logout"
            )
            var number = 1
            val builder = SpannableStringBuilder()
            for (text in list) {
                val contentStart: Int = builder.length
                builder.append(text)
                builder.setSpan(NumberIndentSpan(15, 15, number), contentStart, builder.length, 0)
                number++
            }
            textView.text = builder
我想把数字文本放在同一高度。如图所示,我从这段代码中得到了什么。此外,我还收到了格式问题,如1st点和2nd点文本开始不同,我希望按顺序排列。我怎样才能解决这些问题。提前谢谢


有了这段代码,文本格式对我来说很好,我不知道你是如何得到这个问题的。您是否也可以共享
TextView
XML代码?使用回收器视图有什么问题?